43 lines
1.2 KiB
Markdown
43 lines
1.2 KiB
Markdown
![]() |
# 预编译指令
|
|||
|
|
|||
|
## 目录
|
|||
|
- [define](#define)
|
|||
|
- [预定义宏](#预定义宏)
|
|||
|
- [ifdef](#ifdef)
|
|||
|
- [ifndef](#ifndef)
|
|||
|
- [endif](#endif)
|
|||
|
- [pragma](#pragma)
|
|||
|
- [error](#error)
|
|||
|
- [warning](#warning)
|
|||
|
|
|||
|
## define
|
|||
|
### 预定义宏
|
|||
|
1. 平台相关
|
|||
|
+ `__STDC__` 如果编译器遵循ANSI C标准,则定义为1
|
|||
|
+ `__cplusplus` 如果编译器支持C++,则定义为一个版本号 如199711L表示C++98,201103L表示C++11等
|
|||
|
+ `_WIN32` 在Windows平台下定义,表示目标系统是32位或64位
|
|||
|
+ `_WIN64`
|
|||
|
+ `__unix__`
|
|||
|
+ `__linux__`
|
|||
|
+ `__APPLE__`
|
|||
|
|
|||
|
2. 编译器相关
|
|||
|
+ `__GNUC__` 如果编译器是GCC,则定义为GCC的主版本号
|
|||
|
+ `__clang__` 如果编译器是Clang
|
|||
|
+ `_MSC_VER` 如果编译器是Microsoft Visual C++,则定义为一个版本号
|
|||
|
+ `__ICC` 如果编译器是Intel C/C++ Compiler,则定义
|
|||
|
|
|||
|
3. 文件和行号相关的预定义宏
|
|||
|
+ `__FILE__` 当前文件的名称
|
|||
|
+ `__LINE__` 当前文件的行号
|
|||
|
+ `__DATE__` 编译日期
|
|||
|
+ `__TIME__` 编译时间
|
|||
|
|
|||
|
4. 其他
|
|||
|
+ `__func__` `__FUNCTION__` 当前函数的名称
|
|||
|
+ `__PRETTY_FUNCTION__` 在C++中,包含当前函数的完整声明
|
|||
|
|
|||
|
## pragma
|
|||
|
|
|||
|
`#pragma once` 确保头文件只被包含一次
|