繁体   English   中英

多个#ifndef语句-应用哪一个

[英]Multiple #ifndef statements - which one gets applied

说我有五个文件: main.c, sample1.c, sample1.h, sample2.csample2.h ,其中在每个文件中, DEBUG_PRINTS的定义如下:

#ifndef DEBUG_PRINTS
#define DEBUG_PRINTS 0
#endif

并使用gcc编译代码:

gcc -Wall main.c sample1.c sample2.c -o main

现在,我将一个文件中的DEBUG_PRINTS的值更改为1 在不打印到终端的情况下,如何确定将应用哪个值?

此外,如何在每个文件的本地定义DEBUG_PRINTS就像对变量使用static关键字一样?

每个文件分别编译。 一个文件中的宏在其他任何文件中均不可见。 一旦文件被独立编译,结果对象将链接在一起以创建可执行文件。

#ifndef表示该宏是否在您包含的标头之前或标头中根本没有定义 您的情况下,默认值为0。

如果将一个文件中的DEBUG_PRINTS更改为1 ,它将覆盖在头文件中的#ifndef中的#define 您基本上是在本地定义或将导入的头文件中的默认DEBUG_PRINTS覆盖为1

否则,宏仅对该文件或标头可见。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM