您的位置:首页 > 编程语言 > C语言/C++

C/C++中的预定义宏

2017-08-27 16:09 169 查看
C/C++中有一些预定义宏经常会被用到,在此归纳整理一下。

一般最常用到的是一些标准预定义宏,见下表:

标准预定义宏内容
__
FILE
__
代表当前源代码文件名的字符串文字(包含了详细路径,如”G:/program/study/c++/main.cpp”)
__
LINE
__
代表当前源代码中的行号的整数常量
__
DATE
__
进行预处理的日期(”Mmm dd yyyy”形式的字符串文字,如”Aug 27 2017”)
__
TIME
__
源文件编译时间(格式为”hh:mm:ss”,如”09:11:10” )
__
STDC
__
设置为1时,表示该实现遵循C标准
__
STDC_VERSION
__
代表C标准版本号(格式为yyyymmL的一个长整型数,如C99为199901L)
__
STDC_HOSTED
__
若为本机环境则设置为1,否则设为0
__
cplusplus
该宏有定义说明使用的是C++编译器
__
OBJC
__
设置为1时,表示使用的是Objective-C编译器
__
ASSEMBLER
__
设置为1时,表示正在处理汇编语言
除了上述标准预定义宏,还有一些预定宏也经常用到,比如:

__
FUNCTION
__
:当前所在函数名

__
func
__
:同
__
FUNCTION
__


对于
__
FILE
__
__
LINE
__
__
func
__
__
FUNCTION
__
这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数。而对于
__
DATE
__
__
TIME__则可以获取编译时间,可以根据此数据作为版本标识,并依此判断哪个版本新些及是否需要升级。

#include <iostream>

void func1() {
std::cout << "This is line " << __LINE__ << std::endl;
std::cout << "This function is " << __func__ << std::endl;
}

int main() {
std::cout << "The file is " << __FILE__ << std::endl;
std::cout << "This is line " << __LINE__ << std::endl;
std::cout << "The date is " << __DATE__ << std::endl;
std::cout << "The time is " << __TIME__ << std::endl;
std::cout << "This function is " << __func__ << std::endl;
#ifdef __cplusplus
std::cout << "This is C++ compiler "  << std::endl;
#endif
func1();
return 0;
}


输出结果为:

The file is ../main.cpp

This is line 10

The date is Aug 27 2017

The time is 16:06:34

This function is main

This is C++ compiler

This is line 4

This function is func1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c-c++ 预定义宏