#define EXTERN

vasilyben 2011-03-03 04:02:37
现在我手里有几个c文件,每个c文件的第一行是这样写的:



#define EXTERN


注意EXTERN后没有分号


谁能告诉我是什么意思,为什么要这样用,不用会是什么样子?

40分
...全文
739 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
水月天涯 2011-11-17
  • 打赏
  • 举报
回复
贴出代码如下:
#define _DEBUG

#define EXTERN
#include "global.h"
#include "init_h.h"

main()
{
init_McuInit();

nop();

while (1){
resetWatchDog();//127ms
}
}


其中连写两个 #define 我调试的时候 如果把他们屏蔽掉 就会报错~~~挺奇怪的~~~~不能省么?
李迟 2011-03-03
  • 打赏
  • 举报
回复
编译开关。

我见得最多的是调试信息DEBUG。在一个公共的头文件中宏定义了dbg(...)——当然,使用#ifdef DEBUG来控制,如果哪个文件需要打印调试信息,就在这个头文件包含之前#define DEBUG。
vasilyben 2011-03-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 pengzhixi 的回复:]
你不是说没有#ifdef之类的吗?
[/Quote]
真没有,但想控制的时候,他就有了。
pengzhixi 2011-03-03
  • 打赏
  • 举报
回复
你不是说没有#ifdef之类的吗?
vasilyben 2011-03-03
  • 打赏
  • 举报
回复
它应该是一个开关
#define EXTERN
main()
{
#ifdef EXTERN
printf("有开关\n") ;
#else
printf("没开关\n") ;
#endif
}

Al_Ways 2011-03-03
  • 打赏
  • 举报
回复

#ifndef EXTERN //如果没有定义EXTERN
#define EXTERN //则定义EXTERN

//声明的部分,也就是你.H文件里的内容

#endif

再用include的时候就进行判断,看是否定义了EXTERN
如果没有,就定义EXTERN,然后包含中间那部分

如果你第二次用include包含这个头文件,则再判断是否定义EXTERN
因为是第二次,所以 之前已经定义了EXTERN,直接#endif
这样就不会再次包含中间的内容
vasilyben 2011-03-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 al_ways 的回复:]
#ifndef EXTERN
#define EXTERN

//声明的部分

#endif

一般都是这样用的吧.
这样子可以防止重复包含
[/Quote]



放在C文件的第一行,是为了防止该C文件重复?
Al_Ways 2011-03-03
  • 打赏
  • 举报
回复
#ifndef EXTERN
#define EXTERN

//声明的部分

#endif

一般都是这样用的吧.
这样子可以防止重复包含
vasilyben 2011-03-03
  • 打赏
  • 举报
回复
一个开关而已?
vasilyben 2011-03-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bizet 的回复:]
表示EXTERN被定义过了?
文件中使用#if(n)def EXTERN 可以控制编译
[/Quote]


我感觉你的回答有道理了。
pengzhixi 2011-03-03
  • 打赏
  • 举报
回复
如果是这样,那么这个可有可无了。并不起什么作用。
Bizet 2011-03-03
  • 打赏
  • 举报
回复
表示EXTERN被定义过了?
文件中使用#if(n)def EXTERN 可以控制编译
yuyan_linger 2011-03-03
  • 打赏
  • 举报
回复
同一楼
我也是这么想的
pengzhixi 2011-03-03
  • 打赏
  • 举报
回复
额 没有其他的类似#ifndef之类的东西?

70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧