C / C ++预处理程序指令
在C或C++中,我们发现以(#)符号开头的不同行。这些称为预处理指令。在编译代码之前,这些行在预处理阶段进行处理。在这里,我们将看到三种不同类型的预处理指令。这些是-
条件编译
线控
错误指令
有时,我们在程序中定义了一些宏。使用条件编译指令。我们可以检查宏是否已定义。我们也可以控制它们。因此,如果定义了一个宏,则执行一些任务,否则执行其他任务。
条件编译指令类似于#ifdef-#elif-#else-#endif。每个#ifdef块都必须以#endif结尾。#elif或#else是可选的。
示例
#include <iostream> #define MY_MACRO 10 using namespace std; int main() { #ifdef MACRO cout << "MACRO is defined" << endl; #elif MY_MACRO cout << "MY_MACRO is defined, value is: " << MY_MACRO; #endif }
输出结果
MY_MACRO is defined, value is: 10
通过键入#line使用linecontrol指令。有时我们会在首选行号上出现一些错误。我们可以使用此伪指令更新行号。如果我们将其放置并将当前行更改为200,则此后行将从201开始移动。
示例
#include <iostream> using namespace std; int main() { cout<< "Current line is: " << __LINE__ << endl; #line 200 cout << "Hello" << endl; cout << "World" << endl; cout<< "Current line is: " << __LINE__ << endl; }
输出结果
Current line is: 5 Hello World Current line is: 202
error指令用于在编译之前显示错误。假设应该定义一个宏,但是如果没有定义,我们会显示一条错误消息。可以使用#error完成。
示例
#include <iostream> using namespace std; int main() { #ifdef MY_MACRO cout << "MY_MACRO is defined, value is: " << MY_MACRO; #else #error MY_MACRO should be defined #endif }
输出结果
#error MY_MACRO should be defined