#if defined 与 #ifdef
时间: 2024-01-30 18:42:56 浏览: 94
`#if defined` 和 `#ifdef` 都可以用来判断一个宏是否被定义,但它们的语法和用法略有不同。
`#if defined` 是条件编译指令,它的语法是 `#if defined(identifier)` 或者 `#if defined identifier`,其中 `identifier` 是要判断的宏名。如果宏名 `identifier` 被定义了,那么条件表达式为真,编译器就会编译它后面的代码块;否则条件表达式为假,编译器就会跳过它后面的代码块。
举个例子:
```c++
#if defined(DEBUG)
std::cout << "Debug mode is enabled." << std::endl;
#endif
```
上面的代码会判断宏名 `DEBUG` 是否被定义,如果被定义了,就输出一条调试信息。
`#ifdef` 也是条件编译指令,它的语法是 `#ifdef identifier`,其中 `identifier` 是要判断的宏名。如果宏名 `identifier` 被定义了,那么条件表达式为真,编译器就会编译它后面的代码块;否则条件表达式为假,编译器就会跳过它后面的代码块。
举个例子:
```c++
#ifdef DEBUG
std::cout << "Debug mode is enabled." << std::endl;
#endif
```
上面的代码和前面的例子等价,都是判断宏名 `DEBUG` 是否被定义,如果被定义了,就输出一条调试信息。
总之,`#if defined` 和 `#ifdef` 都可以用来判断宏是否被定义,只不过语法略有不同,选择哪个取决于个人习惯和具体情况。
阅读全文