久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
請問自己寫的C語言頭文件里要把相應的.c文件中所有的函數和變量都包括嗎?
[打印本頁]
作者:
明日香
時間:
2020-12-2 09:28
標題:
請問自己寫的C語言頭文件里要把相應的.c文件中所有的函數和變量都包括嗎?
比如說這是我寫的LCD.c文件:
#include<reg52.h>
#include<intrins.h>
#include "LCD.h"
#define uchar unsigned char
#define uint unsigned int
#define IODATA P0
sbit E=P2^2; //1602使能引腳
sbit RW=P2^1; //1602讀寫引腳
sbit RS=P2^0; //1602數據/命令選擇引腳
uchar strwind[];
void delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--);
for(j=120;j>0;j--);
}
void wcmd(uchar del)//寫命令函數
{
RS=0;//命令選擇端
delay(10);
RW=0;//寫命令
delay(10);
IODATA=del; //把命令字寫入
delay(10);
E=1;//使能
delay(10);
E=0;
}
void lcd1602_writedata(uchar dat)//寫數據函數
{
delay(10);
RS=1;//數據選擇端
delay(10);
RW=0;//寫命令
delay(10);
IODATA=dat; //把要顯示的數據寫入
delay(10);
E=1;
delay(10);
E=0;
}
void lcd1602_init()//LCD初始化
{
wcmd(0x38);
wcmd(0x0C);
wcmd(0x06);
wcmd(0x01);
}
void lcd1602_show(uchar a)
{
uchar m=0;
lcd1602_init();
delay(1000);
wcmd(a);
delay(1000);
for(m=0;m<4;m++)
{
lcd1602_writedata(strwind[m]);
}
}
由于我要在其他的.c文件里用到LCD.c里的函數和變量,所以寫了一個相應的頭文件:LCD.h
如下:
#ifndef _LCD_H
#define _LCD_H
#define uchar unsigned char
#define uint unsigned int
void delay(uint ms);
void lcd1602_init();
void wcmd(uchar del);
void lcd1602_writedata(uchar dat);
void lcd1602_show(uchar a);
extern uchar strwind[];
#endif
請問這樣寫對嗎?是需要把LCD.C里的函數和變量都包括嗎?
作者:
amandv
時間:
2020-12-2 11:57
你可以把定義放在H文件中所有的C調用,或在主程序定義,在其他C文件引用定義
作者:
xy07580782
時間:
2020-12-2 12:15
所有的宏定義,函數名放里面就可以了,變量數組不用.
作者:
csmyldl
時間:
2020-12-2 13:35
可以放入,也可以不放入,主要看你的程序組織結構,作為頭文件,只是預處理的一種,只要符合要求,預處理都可以進行。
作者:
黃youhui
時間:
2020-12-2 16:00
需要被其他C文件調用的才放
作者:
蟹黃味瓜子仁
時間:
2020-12-2 16:25
可以把所有的函數和變量都包括進去,也可以只包括要被其他文件調用的函數和變量。
作者:
回憶不堪回首
時間:
2020-12-7 16:57
我曾經看過把程序直接寫.h文件里的。。。。。沒有.c文件。。。
作者:
xyfzq
時間:
2020-12-7 21:33
不需要都放在里面,主要就是放一些宏定義,以及會被其他.c文件調用的變量
作者:
老馬工作室
時間:
2020-12-8 13:05
以在下拙見:
1.函數和全局變量:
如果函數僅僅在本文件使用,像void wcmd(uchar del)這個函數,一般來說不會被在其它文件(如:main.c)調用,可以不用在頭文件聲明,寫在調用他的函數前面就行了。
不過按照規范,本文件的函數前面定義和聲明的時候應該加上 static 這個關鍵字,static void wcmd(uchar del),表明這個是本文件的函數,不允許其它文件調用,并在lcd.c的前面聲明,不在頭文件聲明。
變量跟函數是同一個道理,就看是本文件使用還是整個工程使用,如果是僅僅在本文件調用,那么定義的時候:static char name; 如果其它也要調用,就把static去掉,在其它文件上要調用的話,在調用的文件上聲明 extern char name; 。
2.宏定義:
如果宏需要被其它文件使用,就在源文件(.c文件)定義,否則就在頭文件定義。
3. "#define uchar unsigned char" 這一段建議改成 "typedef char uchar;",建議查一下 #define 和typedef def 的區別。
作者:
suncat0504
時間:
2020-12-8 19:53
做過其他軟件嗎?比如java。當某個函數需要被外部程序使用的時候,如果想暴露給外部程序,需要使用public聲明。同樣的,c程序中,如果外部程序使用這個程序中的某個函數,他得知道去哪里找。所以設置了頭文件。相當于告訴外部程序需要的函數在哪里。不被外部程序調用的函數,可以不放在頭文件中。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩精品在线一区
|
国产精品区一区二区三区
|
精品成人一区二区
|
国产伦精品一区二区三区照片91
|
日韩精品专区在线影院重磅
|
精品综合在线
|
天堂在线中文
|
求个av网址
|
精品一级
|
视频在线一区二区
|
美女一区
|
一区二区三区电影在线观看
|
亚洲福利一区
|
黄视频网址
|
一区二区三区在线观看视频
|
欧美在线看片
|
国产综合精品一区二区三区
|
日日操日日舔
|
秋霞国产
|
91九色网站
|
亚洲精品片
|
在线观看国产
|
在线高清免费观看视频
|
av毛片
|
日韩天堂av
|
精品欧美一区二区三区免费观看
|
久久精品欧美一区二区三区不卡
|
av毛片在线播放
|
天天爽夜夜操
|
亚洲二区视频
|
丝袜美腿一区二区三区动态图
|
精品亚洲一区二区三区四区五区
|
拍真实国产伦偷精品
|
五月婷婷丁香
|
中文字幕精品一区二区三区精品
|
国产美女网站
|
久久一区二区三区四区
|
国产在线成人
|
国产精品久久久久久中文字
|
日日夜夜天天
|
一区二区国产在线
|