#ifndef 和 #define 的作用是什么?
时间: 2024-09-25 16:20:24 浏览: 51
#ifndef 和 #define 是 C/C++ 预处理器指令,主要用于条件编译。
1. `#ifndef` (Not Include Defined):这个指令检查某个宏是否已经被定义。如果没有定义,它所在的代码块将被包含(即编译)。如果已经定义,代码块将被跳过。这常用于防止多次包含同一个头文件,如防止在一个文件中两次包含某个公共头文件。
```cpp
#ifndef MY_MACRO
#define MY_MACRO
// 在这里定义 My_macro 只会执行一次
#endif
```
上面的例子中,如果 `MY_MACRO` 已经被定义,`#ifndef` 后的代码不会执行。
2. `#define`:这个指令用于定义宏,创建一个名称替换为指定值的占位符。它可以用来代替常量、函数名或复杂的表达式。定义后的宏可以在程序的各个地方使用,相当于字符串字面替换。
```cpp
#define PI 3.14159
std::cout << "The value of pi is: " << PI << std::endl;
```
这里,`PI` 就是一个由 `#define` 定义的常数。
相关问题
##ifndef SYMBOL #define SYMBOL value #endif
这是一个经典的 C/C++ 预处理器宏定义模板。它的作用是防止同一个头文件被多次包含。
具体来说,当第一次包含头文件时,`SYMBOL` 还没有被定义,因此 `SYMBOL value` 这行代码会被执行,将 `SYMBOL` 宏定义为 `value`。
当第二次及以后再次包含同一个头文件时,由于 `SYMBOL` 已经被定义,因此预处理器会直接跳过 `SYMBOL value` 这行代码,从而避免了重复定义。
需要注意的是,`SYMBOL` 和 `value` 可以是任何合法的标识符和表达式,不一定非要是这两个具体的名称。
#ifndef _BMP #define _BMP
这是一个条件编译的指令,用于判断宏定义_BMP是否已经被定义。如果_BMP未被定义,则执行下面的代码,否则跳过。其中#ifndef是C/C++中的预处理命令之一,用于判断某个宏是否已经被定义。如果宏未被定义,则执行下面的代码,否则跳过。#define是另一个预处理命令,用于定义宏。在这个例子中,如果_BMP未被定义,则定义它。
阅读全文