#define xxx in source或-D xxx to compiler?

时间:2014-04-08 04:54:38

标签: c

以下内容是等效的:

#define xxx
在源代码中

gcc -D xxx

第一个仅适用于它出现的源文件,而不适用于未出现的其他源文件,因此xxx未在其他文件中定义吗?

第二个是否意味着在所有源代码文件中都定义了xxx?

谢谢!

4 个答案:

答案 0 :(得分:1)

第一个仅适用于定义它的源文件,但可以放在头文件中,该文件可以包含在多个文件中,使定义适用于更多文件。第二个定义在使用-D xxx编译的所有文件中都处于活动状态。

答案 1 :(得分:1)

  

第一个是否仅适用于它出现的源文件   不在其他源文件中没有出现,所以xxx不是   在那些其他文件中定义?

右。

  

第二个是否意味着在所有源代码中定义了xxx   文件?

两种方法都做同样的事情,但两种情况下的定义范围都不同。

-D选项在makefile中广泛使用,因为在这里您不需要修改源文件。但如果该定义仅适用于任何文件,那么在适当的文件中定义它是一个不错的选择。

答案 2 :(得分:1)

我认为编译器选项对于您希望在编译时禁用或启用功能更有帮助,因此您不需要编辑任何文件。

答案 3 :(得分:1)

是的,你在所有方面都是正确的。如果在头文件中执行#define,它将直接或间接地应用于包含该头文件的所有文件。那用于定义常量或宏。