一、宏定义的补全
1.C宏的补全
C的精髓宏定义更有更好的兼容请看下面代码,VS2015在部分没有做提示,但是可以用。但在标准C++0x版本不能用。如__VA_ARGS__等#include<cstdio>
#define LOG(...){\
printf("文件名为:%s,%d\n",__FILE__,__LINE__);\
printf("变长参数为%s\n",__VA_ARGS__);\
printf("函数名为%s\n",__func__);\
}
int main()
{
int a = 10;
LOG("a=%d", a);
return 0;
}
2.宏__cplusplus问题
C++11标准说__cplusplus更新为201103L,C++03则为199711L。依据此可以判断当前使用的是什么编译器。
#if __cplusplus < 201103L
#error "should use C++11 implementation"
#endif //
目的是运行到#error时编译器自动报错
但我的VS2015中的值还是199711L。这里说下,C++11现阶段不是所有编译器支持都很良好。官方其实推荐4.8.4以上的GCC-C++