
BIG ADD: - docker - archlinux FIX: - vim - c_cpp - string hash - linux /dev/random - thread - STL - linux - command - last OTHERS: - add antenna.md - mirrors - makefile.md
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` 确保头文件只被包含一次
|