以下内容是等效的:
#define xxx
在源代码中和
gcc -D xxx
第一个仅适用于它出现的源文件,而不适用于未出现的其他源文件,因此xxx未在其他文件中定义吗?
第二个是否意味着在所有源代码文件中都定义了xxx?
谢谢!
答案 0 :(得分:1)
第一个仅适用于定义它的源文件,但可以放在头文件中,该文件可以包含在多个文件中,使定义适用于更多文件。第二个定义在使用-D xxx编译的所有文件中都处于活动状态。
答案 1 :(得分:1)
第一个是否仅适用于它出现的源文件 不在其他源文件中没有出现,所以xxx不是 在那些其他文件中定义?
右。
第二个是否意味着在所有源代码中定义了xxx 文件?
是
两种方法都做同样的事情,但两种情况下的定义范围都不同。
-D选项在makefile中广泛使用,因为在这里您不需要修改源文件。但如果该定义仅适用于任何文件,那么在适当的文件中定义它是一个不错的选择。
答案 2 :(得分:1)
我认为编译器选项对于您希望在编译时禁用或启用功能更有帮助,因此您不需要编辑任何文件。
答案 3 :(得分:1)
是的,你在所有方面都是正确的。如果在头文件中执行#define,它将直接或间接地应用于包含该头文件的所有文件。那用于定义常量或宏。