找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1593|回复: 7
打印 上一主题 下一主题
收起左侧

关于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........

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2021-6-10 06:43 | 只看该作者
#define uchar unsigned char  宏定义数据类型可以写在所有H文件中,编译器会自动去除重复部分。
extern关键字指定数组时要写明长度。如HIM[4];
回复

使用道具 举报

板凳
ID:592807 发表于 2021-6-10 09:08 | 只看该作者
你为啥要在H文件里面声明一个外部函数 extern void key_service();
#include 关键字已经可以帮你调用外部函数
回复

使用道具 举报

地板
ID:277550 发表于 2021-6-10 09:10 | 只看该作者
把有定义#define uchar unsigned char  的头文件,放到最前面引用
回复

使用道具 举报

5#
ID:298123 发表于 2021-6-10 09:54 | 只看该作者
用typedef
回复

使用道具 举报

6#
ID:487569 发表于 2021-6-10 12:03 | 只看该作者
因为你的 #define uchar unsigned char  的定义放在main.h头文件,而你的HMI.h里面并没有#include main.h。所以识别不了
回复

使用道具 举报

7#
ID:734017 发表于 2021-6-11 09:00 | 只看该作者
黄youhui 发表于 2021-6-10 09:08
你为啥要在H文件里面声明一个外部函数 extern void key_service();
#include 关键字已经可以帮你调用外部 ...

哦,好的
回复

使用道具 举报

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

好的,这个可以。。感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表