Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.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++ 是否可以更换/或更换。在宏中带有_uu的字符串中?_C++_C_Objective C - Fatal编程技术网

C++ 是否可以更换/或更换。在宏中带有_uu的字符串中?

C++ 是否可以更换/或更换。在宏中带有_uu的字符串中?,c++,c,objective-c,C++,C,Objective C,我想用/或转换字符串。转换为自动生成的变量名。所以我需要转换/或。转换为变量命名可以接受的内容,例如 使用函数很容易做到这一点。但有了宏,这可能吗 #define ROUTE(path, impl) \ char * k##path##_route = "{"#path":\""#impl"\"}"; // compilation failure for path like /usr/abc or ./abc 我可以使用impl来命名变量,但由于多个路径可能映射到同一个impl,编译器会抱怨使

我想用/或转换字符串。转换为自动生成的变量名。所以我需要转换/或。转换为变量命名可以接受的内容,例如

使用函数很容易做到这一点。但有了宏,这可能吗

#define ROUTE(path, impl) \
char * k##path##_route = "{"#path":\""#impl"\"}"; // compilation failure for path like /usr/abc or ./abc
我可以使用impl来命名变量,但由于多个路径可能映射到同一个impl,编译器会抱怨使用同一个impl的不同路径存在重复

但有了宏,这可能吗

#define ROUTE(path, impl) \
char * k##path##_route = "{"#path":\""#impl"\"}"; // compilation failure for path like /usr/abc or ./abc
不可以。无法使用标准预处理器替换参数的字符

可通过变量命名接受,例如__


是不可接受的变量名,因为它是为实现保留的。所有的标识符都包含C++中的连续下划线。

你实际使用的是什么语言?这是三个不同的标记。在C预处理器中查找字符串化。你可能会对可能发生的事情感到惊讶done@NathanOliver-实际上,我使用的是Objective-C。但对于宏定义和处理,Objective-C与C相同。不包含,仅从开始
n\u\n
是应用程序使用的有效变量名。@R。。是的<代码>n__n
保留。您可能会对以下规则感到困惑:以下划线开头,大写字母后跟的标识符也是保留的。还有,所有标识符都以下划线开头,后跟全局命名空间中的任何字符。这个问题是针对3种不同的语言标记的,所以您的想法可能与我的不同(C)<代码>n__n未保留在C.@R。。哦,我没有注意到语言标签。我的答案适用于C++。关于C,你可能是对的。因为这不是解决我问题的正确方法,我改变了主意,用另一种方法来解决它:。