预编译指令都以“#”开始,且一般都在一行的顶格写起(不是必须的),行尾不需要分号。
预编译指令为文件作用域,即其作用范围仅在其所在的文件中(头文件中的预编译指令将在所有包含该头文件的文件中有效)
1、#include:将某个文件的内容读进来。
有两种形式:#include <filename.h>与#include "filename.h",
前者表示filename.h为标准头文件,预编译器将在预定义一些位置寻找该头文件;后者表示filename.h为用户自定义的头文件,预编译器将在包含该指令的文件所在的位置开始查找该头文件。
2、#ifdef #ifndef #define #endif
#ifdef DEBUG // 测试DEBUG是否已经定义
#ifndef DEBUG // 测试DEBUG是否没有定义
#define // 定义DEBUG
#endif // #ifdef或者#ifndef语句结束
C++中,定义头文件时,为了避免头文件被多次引用而造成的重复定义,需要将整个头文件内容包含在下面的预编译指令中(假设头文件为file.h):
#ifndef FILE_H
#define FILE_H
// 头文件的内容
#endif
3、常见的预编译常量
__plusplus // 编译C++程序时编译器自动定义
__STDC__ // 编译C程序时编译器自动定义
__FILE__ // 当前编译的文件名
__LINE__ // 当前编译文件的当前行
__DATE__ // 编译文件时的日期
__TIME__ // 编译文件时的时间
其中,__FILE__与__LINE__在编译期间是不断更新的,其他四个变量在编译期间固定。
4、assert()
C语言定义的预编译宏,断言某个表达式为true;若为false,则抛出异常。
C++ 预编译指令
最新推荐文章于 2023-01-01 10:20:16 发布