|
1
2
3
4
|
#define
MY_NAME "Alex"cout
<< "My
name is "
<< MY_NAME << endl;#undef
MY_NAMEcout
<< "My
name is "
<< MY_NAME << endl; |
程序的最后一行产生编译错误,因为my_name一直未定义。
条件编译
条件编译预处理器指令允许您指定在什么条件下会或不会编译。唯一的条件编译指令将在本节覆盖#如果定义了,# ifndef,和# endif。
如果定义了该#预处理器指令允许处理器检查值是否已#定义。如果是这样的话,如果定义了编译#和相应的# endif之间的代码。如果不是,代码被忽略。
考虑下面的代码片段:
|
1
2
3
4
5
6
7
8
9
|
#define
PRINT_JOE#ifdef
PRINT_JOEcout
<< "Joe"
<< endl;#endif#ifdef
PRINT_BOBcout
<< "Bob"
<< endl;#endif |
因为print_joe已# cout <<线的定义,“乔”<< endl;将汇编。因为print_bob尚未# cout<<线的定义,“鲍勃”<< endl;将不会编译。
#则是#如果定义了相反的,因为它允许你检查是否一个名字还没有被定义。
|
1
2
3
|
#ifndef
PRINT_BOBcout
<< "Bob"
<< endl;#endif |
这个程序打印“鲍勃”,因为print_bob从未#定义。
头文件保护
因为头文件可以包含其他头文件,有可能最终在一个头文件被多次包含的情况。例如,考虑下面的程序:
|
1
2
|
#include
"mymath.h"int
add(int
x, int
y); |
|
1
2
|
#include
"mymath.h"int
subtract(int
x, int
y); |
当这是包括报头的第一件事,它是检查是否有_ _已名(_以前定义的。如果这是头文件包含一些告诉我们,这里将_独特的_名字没有_定义。第一次,因此,恩#定义了一些__名称和独特的_这里包括的内容文件。如果这不是头文件包含一些告诉我们,这里独特的_ _名称已经定义将_于第一次的头是included.consequently将头,全部忽视内容的第一次。
在你的头文件(头卫队在线应该拥有它们。一些独特的_ _名称_这里你想要的任何名称可以,但头的名称文件通常附加在H与_使用。添加H。例如,标题护栏会:
本文深入探讨了C++预处理器的使用,包括宏定义、条件编译和头文件保护等核心概念。通过具体实例展示了如何利用这些特性进行高效且安全的编程实践。
6481

被折叠的 条评论
为什么被折叠?



