可能是重复问题:
使用##和LINE(定位宏中的令牌连接)创建C宏
我尝试使用__LINE__
宏来生成不同的变量名。我有一个名为Benchmark(位于utils命名空间中)的作用域基准测试类,它的构造函数接受一个字符串。下面是我创建的宏定义:
#define BENCHMARK_SCOPE utils::Benchmark bm##__LINE__(std::string(__FUNCTION__))
不幸的是,这会导致以下错误:
<some_file_name>(59): error C2374: 'bm__LINE__' : 重新定义;多次初始化
这让我得出结论,__LINE__
宏未被扩展。根据此帖子,我已创建了自己的宏。你有想法为什么 __LINE__
没有被扩展吗?
编辑:可能编译器信息也很重要。我正在使用 Visual Studio 2010。
bm## __LINE__
吗? - Cameron#define _BENCHMARK_SCOPE(line) utils::Benchmark bm##line(...
与#define BENCHMARK_SCOPE _BENCHMARK_SCOPE(__LINE__)
- Cameron