1.1开始支持宏_STDC_ 和 _func_
不得不吐槽,g++早就支持这俩宏了,第一个宏_STDC_还有几个衍生的宏,用来控制版本;_func_在函数定义体内使用返回函数名称,不要在形参列表中使用,原因你懂的,函数都还没声明完毕呢。
顺带提一下标准C支持的其他的宏:
__LINE__ 在源代码中插入当前源代码行号
__FILE__ 在源代码中插入当前源代码文件名
__DATE__ 在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕
__TIME__ 在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕
__STDC__ 当要求程序严格遵循ANSIC标准时该标识符被赋值为1。
__cplusplus 当用C++编译程序编译时,标识符__cplusplus就会被定义
1.2_Pragma操作符替代#Pragma宏定义
语法: _Pragma (字符常量)
好处:该操作符可以参与其他宏定义和操作符运算
实例:
#Pragma once 变为: _Pragma("once");
1.3 支持long long int
也是马后炮,一直在用了
C输出格式:long long int :%lld,unsigned long long int: %llu
1.4编译期断言:static_assert()
运行期断言函数:assert(逻辑表达式),表达式为假时调用abort()中断执行
static_assert(逻辑表达式,警告信息字符常量);
注意:逻辑表达式必须在编译期就可以断言真假!!!
请记住,static_asset 是在编译时执行的,不能用于检测运行时的值,向下面函数的参数。
void Divide(int a, int b)
{