这几个宏主要用于调试, 最近工作用到, 分享下.
第一个:
__COUNTER__
这个宏有点"奇葩", 编译器每次遇到它都会增加一个, 主要用于调试之用. 下面是测试代码:
#include <iostream> #include <iomanip> #include <string> #include <cassert> using namespace std; #define FNAME "fake_source.cpp" int a = __COUNTER__; int b = __COUNTER__; int c = __COUNTER__; int main(int argc, char** argv) { cout << __COUNTER__ << endl; cout << a << " " << b << " " << c << endl; return 0; }
输出:
3 0 1 2
用途很多, 比如测试调用深度, 头文件包含深度, 递归调用深度等等.
只有注册用户才能在此添加评论。 如果您已经注册,请登录。 如果您还没有注册,请注册并登录。