相关疑难解决方法(0)

使用__LINE__为不同的变量名创建宏

可能重复:
使用##和LINE创建C宏(使用定位宏进行标记连接)

我试图使用__LINE__宏来生成不同的变量名称.我有一个名为Benchmark的作用域基准测试类(位于utils命名空间中),它的构造函数接受一个字符串.这是我创建的宏定义:

#define BENCHMARK_SCOPE utils::Benchmark bm##__LINE__(std::string(__FUNCTION__))
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会导致以下错误:

<some_file_name>(59): error C2374: 'bm__LINE__' : redefinition; multiple initialization

这使我得出结论__LINE__宏不会扩展.我根据这篇文章创建了我的超时空.你有想法为什么__LINE__不扩大?

编辑:可能编译器信息也相关.我正在使用visual studio 2010.

c++ macros concatenation visual-studio-2010 c-preprocessor

13
推荐指数
3
解决办法
8964
查看次数