一个简单的宏
#define LOG_INFORMATION(x, ...) LOG_ME("%s:%d, "x, __FUNCTION__,__LINE__, ##__VA_ARGS__)
一直都可以正常编译,但是当启用C++11的时候,报告编译错误
C++ 11 Complier ErrorShell
error: unable to find string literal operator 'operator""x'
网上搜了一下,说是C++11要求,当字符串跟变量连接的时候,必须增加一个空格才行。因此简单修改如下即可。
#if __cplusplus < 201103L
#define LOG_INFORMATION(x, ...) LOG_ME("%s:%d, "x, __FUNCTION__,__LINE__, ##__VA_ARGS__)
#else
#define LOG_INFORMATION(x, ...) LOG_ME("%s:%d, " x, __FUNCTION__,__LINE__, ##__VA_ARGS__)
#endif
注意:在“android-ndk-r10e”中使用的GCC版本,GCC-4.9之前的版本都存在"__cplusplus"宏定义错误的问题,需要参考“NDK下GCC定义__cplusplus不正确的问题”,把GCC升级到4.9
- operator literal unable string erroroperator literal unable string literals string raw quot characters literal error operation permitted change unable following provision unable errors 目录unable pacman error operation localhost failed error certificate unable issuer error contains string check error literal