公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

XMC实验分享之127: 几个用作调试作用的编译器内建宏

XMC实验分享之127: 几个用作调试作用的编译器内建宏

User12775
Level 5
Level 5
First solution authored First like received

这几个宏主要用于调试, 最近工作用到, 分享下.


第一个:

__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

用途很多, 比如测试调用深度, 头文件包含深度, 递归调用深度等等.

0 点赞
812 次查看
2 评论