首页 > 代码库 > C++11 新特性一增加了 __func__宏
C++11 新特性一增加了 __func__宏
在C11的新特性中,新增加了宏定义 __func__ 用来描述直接得到当函数的名称。
如:
const char* hello() {return __func__;} //返回hello.
也可作为初始化参数传递如:
struct TestStruct {
TestStruct (): name(__func__){} //返回TestStruct结构体类型。
const char* name;
};
__VAR_ARGS__ 表示可变参数的宏串,如下
#define LOG(...) {\
fprintf(stderr, "%s: Line %d:\t", __FILE__, __LINE__);\
fprintf(stderr, __VA_ARGS__);\
fprintf(stderr, "\n");\
}
这样就可以用一个宏实际了,标准输出的行为了。
1 //demo.cpp 2 3 #include <iostream> 4 5 using namespace std; 6 7 const char* hello() {return __func__;} 8 const char* world() {return __func__;} 9 //====================1======================== 10 struct TestStruct { 11 TestStruct (): name(__func__){} 12 const char* name; 13 }; 14 //====================2======================== 15 #define LOG(...) {16 fprintf(stderr, "%s: Line %d:\t", __FILE__, __LINE__);17 fprintf(stderr, __VA_ARGS__);18 fprintf(stderr, "\n");19 } 20 //====================3======================== 21 int main(int argc, char **args){ 22 cout << "Standard Clib: " << __STDC_HOSTED__ << endl; 23 cout << "Standard C: " << __STDC__ << endl; 24 25 cout << "ISO/IEC " << __STDC_ISO_10646__ << endl; 26 cout << hello() << ", " << world() << endl; 27 //====================1======================== 28 TestStruct ts; 29 cout << ts.name << endl; 30 //====================2======================== 31 32 int x = 3; 33 LOG("x = %d", x); 34 35 //====================3======================== 36 37 38 39 40 return 0; 41 } 42 43 // gcc -std=c++11 demo.cpp -omain
C++11 新特性一增加了 __func__宏
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。