预定义宏

  • __STDC_HOSTED__ 如果编译器的目标系统环境中包含完整的标准C库,那么这个宏就定义为1,否则宏的值为0
  • __STDC__ C编译器通常用这个宏的值来表示编译器的实现是否和C标准一致,C++11标准中这个宏是否定义以及定成什么值由编译器来决定
  • __STDC_VERSION__ C编译器通常用这个来表示所支持的C标准的版本,比如1999mml,C++11标准中这个宏是否定义以及写成什么值将由编译器来决定
  • __STDC_ISO_10646__ 这个宏通常定义为一个yyyymml格式的整数常量,例如1997121,用来表示C++编译环境符合某个版本的ISO/IEC 10646标准
  • __func__ 基本功能就是返回所在函数的名字,事实上,按照标准定义,编译器会隐式的在函数的定义之后定义__func__标识符。在C++11中,标准甚至允许其使用在类或结构体中。
#include <iostream>
using namespace std;

int main()
{
        cout<<"Standard Clib: "<<__STDC_HOSTED__<<endl;
        cout<<"Standard C: "<<__STDC__<<endl;
//      cout<<"C Standard version: "<<__STDC_VERSION__<<endl;
        cout<<"ISO/IEC: "<<__STDC_ISO_10646__<<endl;
        cout<<"Function name: "<<__FUNC__<<endl;

        return 0;
}
[root@localhost codes]# ./a.out 
Standard Clib: 1
Standard C: 1
ISO/IEC: 200009
Function name: main

阅读自:《深入理解C++11:C++11新特性解析与应用》