📜  C C++预处理程序指令|套装2(1)

📅  最后修改于: 2023-12-03 15:13:44.915000             🧑  作者: Mango

C/C++ 预处理程序指令|套装2

预处理程序指令是由以 # 字符开头的命令,它们会在编译代码之前进行处理。本文将介绍C/C++中常用的预处理程序指令|套装2。

ifdef, ifndef, endif

这是一组经典的预处理程序指令,可用于条件编译。

#ifdef MACRO_NAME
/* 在 MACRO_NAME 已定义的情况下进行的操作 */
#else
/* 在 MACRO_NAME 未定义的情况下进行的操作 */
#endif

#ifndef MACRO_NAME
/* 在 MACRO_NAME 未定义的情况下进行的操作 */
#else
/* 在 MACRO_NAME 已定义的情况下进行的操作 */
#endif
define, undef

这是定义和取消定义预处理程序宏的指令。

#define MACRO_NAME value /* 宏定义 */ 

#undef MACRO_NAME /* 宏取消定义 */
include

这个预处理程序指令用于将源代码中指定的头文件包含到当前代码中。

#include <file> /* 包含系统头文件 */
#include "file" /* 包含用户头文件 */
pragma

这个指令用于向编译器发送特定的命令。

#pragma option push -v /* 保存当前编译选项,并将 -v 选项设置为开启状态 */ 
... /* 一些操作 */ 
#pragma option pop /* 恢复以前的选项 */
error

这个指令用于在编译时强制发出错误信息。

#error This is an error message. /* 输出错误信息 */
warning

这个指令用于在编译时强制发出警告信息。

#warning This is a warning message. /* 输出警告信息 */
line

这个指令用于指定当前行号以及源文件名,可以用于生成调试信息。

#line 24 "file_name" /* 将行号设置为 24,源文件设置为 file_name */
ifdef, ifndef, elif, else

这是构建更复杂的条件编译的一组指令。

#ifdef MACRO_NAME_1
/* 在 MACRO_NAME_1 已定义的情况下进行的操作 */
#elif defined MACRO_NAME_2
/* 在 MACRO_NAME_2 已定义的情况下进行的操作 */
#else
/* 在 MACRO_NAME_1 和 MACRO_NAME_2 都未定义的情况下进行的操作 */
#endif

#ifndef MACRO_NAME_1
/* 在 MACRO_NAME_1 未定义的情况下进行的操作 */
#elif defined MACRO_NAME_2
/* 在 MACRO_NAME_2 已定义的情况下进行的操作 */
#else
/* 在 MACRO_NAME_1 未定义且 MACRO_NAME_2 未定义的情况下进行的操作 */
#endif
总结

本文介绍了C/C++中常用的预处理程序指令|套装2,这些指令能够使程序员处理代码中的条件编译、宏定义宏取消定义、引用头文件以及生成调试信息等操作,能够在编写复杂程序时为程序员提供便利。

使用预处理程序指令时,请注意,它们只是对源代码的一个简单文本替换,可能会导致不必要的麻烦。