标题: 关于C语言extern疑问 [打印本页]

作者: happy2058    时间: 2021-6-10 01:22
标题: 关于C语言extern疑问
先上图


在main.h里 写#define uchar unsigned char
被 HMI.c和Gear.c引用 只要把HMI.h改成uchar就报错
但是在Gear.h不报错,如下图

在Gear.h 用uchar或unsigned char都没问题,但在HMI.h里就是不行,只要用uchar所有语句都报inc/HMI.h(8): error C129: missing ';'
但在所有.c里可以写uchar........


作者: wulin    时间: 2021-6-10 06:43
#define uchar unsigned char  宏定义数据类型可以写在所有H文件中,编译器会自动去除重复部分。
extern关键字指定数组时要写明长度。如HIM[4];
作者: 黄youhui    时间: 2021-6-10 09:08
你为啥要在H文件里面声明一个外部函数 extern void key_service();
#include 关键字已经可以帮你调用外部函数
作者: devcang    时间: 2021-6-10 09:10
把有定义#define uchar unsigned char  的头文件,放到最前面引用
作者: hz_dyg    时间: 2021-6-10 09:54
用typedef
作者: ZXWPL    时间: 2021-6-10 12:03
因为你的 #define uchar unsigned char  的定义放在main.h头文件,而你的HMI.h里面并没有#include main.h。所以识别不了
作者: happy2058    时间: 2021-6-11 09:00
黄youhui 发表于 2021-6-10 09:08
你为啥要在H文件里面声明一个外部函数 extern void key_service();
#include 关键字已经可以帮你调用外部 ...

哦,好的
作者: happy2058    时间: 2021-6-11 09:01
wulin 发表于 2021-6-10 06:43
#define uchar unsigned char  宏定义数据类型可以写在所有H文件中,编译器会自动去除重复部分。
extern关 ...

好的,这个可以。。感谢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1