使用CMake定义某些定义时,它们以这种方式定义:
add_definitions(-DMY_DEFINITION)
有时我会看到人们以不同的方式制定定义:
add_definitions(-DMY_DEFINITION=1)
然后我的问题是它们在生成的C ++项目中的区别。谢谢。
答案 0 :(得分:3)
这与CMake无关,而是与C / ++编译器有关。 在代码中,差异是相同的:
#define MY_DEFINITION 1
和
#ifndef MYHEADER
#define MYHEADER
// ...
#endif
实际上,如果您想要的唯一事情就是知道宏是否存在(已经定义),就像不需要为C / ++宏定义一个值,例如"标记&#34 ;。最好的例子是标题包括警卫:
#ifdef MY_DEFINITION
// Do something
#else
// Do somthing else
#endif
但有时人们更喜欢设定一个值(比如= 1),即使他们不需要它,因为它更详尽或更清楚。
更一般地说,当您影响宏的值时,这是因为您希望宏名称扩展为该值。如果没有,你只是期望价值存在。测试的方式可能有所不同:
使用-DMY_DEFINITION:
#if MY_DEFINITION
// Do something
#else
// Do somthing else
#endif
-DMY_DEFINITION = 1
BFTask