gcc的-D和-U参数:宏的设置与取消
-Dmacro=string,等价于在头文件中定义:#define macro string。
例如:-DTRUE=true,等价于:#define TRUE true
-Dmacro,等价于在头文件中定义:#define macro 1,实际上也达到了定义:#define macro的目的。
例如:-DLINUX,等价于:#define LINUX 1(与#define LINUX作用类似)。
--define-macro macro=string与-Dmacro=string作用相同。
- /* hello.c */
- #include <stdio.h>
-
- #ifdef YES
- char* str = "Yes, this is a macro.";
- #else
- char* str = "No, there is no macro.";
- #endif
-
- int main()
- {
- printf("%s/n", str);
- return 0;
- }
使用-D传入宏YES来进行编译:
- recordus@LFS test # gcc -DYES -o helloyes hello.c
- recordus@LFS test # ./helloyes
- Yes, this is a macro.
而不传入宏则是这样的:
- recordus@LFS test # gcc -o hellono hello.c
- recordus@LFS test # ./hellono
- No, there is no macro.
gcc还有与-D对应的另一个参数-U用于取消宏,比如:
- root@LFS test # gcc -DYES -UYES -o helloyesno hello.c
- root@LFS test # ./helloyesno
- No, there is no macro.
这大概是这两个参数最简单的应用了:) |