Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;令牌粘贴运算符未在预处理器定义中连接_行__C++_Token Pasting Operator - Fatal编程技术网

C++ C++;令牌粘贴运算符未在预处理器定义中连接_行_

C++ C++;令牌粘贴运算符未在预处理器定义中连接_行_,c++,token-pasting-operator,C++,Token Pasting Operator,我已定义了以下预处理器指令: #定义计时器(名称)::我的应用程序::计时器计时器####行(名称) 使用方法如下: 定时器(“第一”); 计时器(“秒”); 我收到一个错误,指出第二次使用重新定义了计时器\uuuuuuuuuuu ::my_app::Timer timer__LINE__("first"); ::my_app::Timer timer__LINE__("second"); 我真正想要的是一个带有源代码行号的计时器定义,例如: ::我

我已定义了以下预处理器指令:

#定义计时器(名称)::我的应用程序::计时器计时器####行(名称)
使用方法如下:

定时器(“第一”);
计时器(“秒”);
我收到一个错误,指出第二次使用重新定义了
计时器\uuuuuuuuuuu

::my_app::Timer timer__LINE__("first");
::my_app::Timer timer__LINE__("second");
我真正想要的是一个带有源代码行号的计时器定义,例如:

::我的应用程序::计时器计时器1(“第一”);
::我的应用程序::计时器计时器2(“秒”);
如果有任何用途,我的叮当版本详细信息:

❯ /Library/Developer/CommandLineTools/usr/bin/clang--版本
Apple clang 11.0.3版(clang-1103.0.32.29)
目标:x86_64-apple-darwin19.5.0
线程模型:posix
InstalledDir:/Library/Developer/CommandLineTools/usr/bin

我看到了其中的示例(
::Hazel::InstrumentationTimer###uuuuu LINE uuu(fixedName.Data)
)。为什么令牌粘贴操作符没有像我在场景中预期的那样工作?

在计算
\uuuuuu行\uuuuuu
后,需要延迟连接:

#定义CONCAT(a,b)a b
#定义粘贴(a,b)a##b
#定义计时器(名称)::我的应用程序::计时器连接(粘贴,(计时器,_uu行);(名称)
或者,使用stringify操作符将变量命名为计时器名称:

#定义计时器(名称)::我的应用程序::计时器计时器#名称(#名称)
计时器(第一个)
计时器(秒)
导致

::我的应用程序::计时器计时器计时器第一(“第一”)
::我的应用程序::定时器定时器秒(“秒”)

您需要在计算
\uuuuuu行\uuuuuu
后推迟连接:

#定义CONCAT(a,b)a b
#定义粘贴(a,b)a##b
#定义计时器(名称)::我的应用程序::计时器连接(粘贴,(计时器,_uu行);(名称)
或者,使用stringify操作符将变量命名为计时器名称:

#定义计时器(名称)::我的应用程序::计时器计时器#名称(#名称)
计时器(第一个)
计时器(秒)
导致

::我的应用程序::计时器计时器计时器第一(“第一”)
::我的应用程序::定时器定时器秒(“秒”)

它真的在那里工作吗?我想是的-有相当数量的贡献者,我怀疑使用它的人要多得多(它来自YouTube系列)。但是原始版本是MSVC,所以可能编译器实现的差异导致它在那里工作?感谢链接的问题-完美地解决了。它真的在那里工作吗?我想是的-有合理数量的贡献者,我怀疑更多的人使用它(来自YouTube系列)。但是原始版本是MSVC,所以可能编译器实现的差异导致它在那里工作?感谢链接的问题-完美地解决了。嗯,这是一种相当混乱的延迟连接的方式,它通常是像dupe中介绍的那样完成的。嗯,这是一种相当混乱的延迟连接的方式,这通常是做一样,提出了在副本。