C++11读书笔记—1(长期历史遗留问题,宏定义与类型)

来源:互联网 发布:迈视高清网络摄像机 编辑:程序博客网 时间:2024/05/29 10:11

一、宏定义的补全

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++

0 0
原创粉丝点击