c/c++语言开发共享C ++宏:操作参数(具体示例)

我需要更换

GET("any_name") 

 String str_any_name = getFunction("any_name"); 

困难的部分是如何修剪引号。 可能? 有任何想法吗?

    怎么样:

     #define UNSAFE_GET(X) String str_##X = getFunction(#X); 

    或者,为了安全防范嵌套宏问题:

     #define STRINGIFY2(x) #x #define STRINGIFY(x) STRINGIFY2(x) #define PASTE2(a, b) a##b #define PASTE(a, b) PASTE2(a, b) #define SAFE_GET(X) String PASTE(str_, X) = getFunction(STRINGIFY(X)); 

    用法:

     SAFE_GET(foo) 

    这是编译的:

     String str_foo = getFunction("foo"); 

    关键点:

    一种方法是在调用宏时不引用名称:

     #include  #define GET( name )  int int##name = getFunction( #name );  int getFunction( char * name ) { printf( "name is %sn", name ); return 42; } int main() { GET( foobar ); } 

    在回答你的问题时,不,你不能在C ++中“剥离”引号。 但正如其他答案所示,您可以“添加它们”。 既然你总是会使用字符串文字(对吗?),你应该可以切换到新方法。

    需要了解更多c/c++开发分享C ++宏:操作参数(具体示例),也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享C ++宏:操作参数(具体示例)相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980551.html

      (0)
      上一篇 2021年12月14日
      下一篇 2021年12月14日

      精彩推荐