stringification相关内容
我想知道这段代码输出背后的原因.我想不出答案. #define f(a,b) a##b#定义 g(a) #a#define h(a) g(a)无效的主要(){printf("%s %s",h(f(1,2)),g(f(1,2)));} PS:输出是 12 f(1,2).我以为是 12 12 或 f(1,2) f(1,2). 解决方案 h(f(1,2)) f(1,2) 代替 a.a 不是
..
替代标题(帮助搜索) 将预处理器标记转换为字符串 如何从 C 宏的值中生成字符字符串? 原始问题 我想在编译时使用 C #define 来构建文字字符串. 字符串是为调试、发布等而更改的域. 我想要一些这样的东西: #ifdef __TESTING#define IV_DOMAIN domain.org//内部测试#elif __LIVE_TESTING#defi
..
当使用 C 预处理器时,可以像这样对宏参数进行字符串化: #define TO_STRING(x) "带有 " #x 的字符串 等使用时,结果如下: TO_STRING(test) 将扩展为:"a string with test" 有什么方法可以反其道而行之吗?获取字符串文字作为输入参数并生成 C 标识符?例如: TO_IDENTIFIER("some_identifier
..
我正在做一个项目,其中有许多由连接(数字等)组成的常量字符串. 例如,我有一个 LOCATION 宏,它可以将 __FILE__ 和 __LINE__ 格式化成一个字符串,我可以用它来知道我所在的位置打印消息或错误时的代码: #define _STR(x) # x#define STR(x) _STR(x)#define LOCATION __FILE__ "(" STR(__LINE__
..
正如我之前的许多问题中所提到的,我正在使用 K&R,目前正在使用预处理器.更有趣的事情之一—从我之前尝试学习 C 的任何尝试中我从未知道的东西 -mdash;是 ## 预处理器运算符.根据 K&R: 预处理操作符##提供了一种连接实际的方法宏扩展期间的参数.如果一个替换文本中的参数是与 ## 相邻,参数为替换为实际参数,## 和周围的空白是删除,并重新扫描结果.例如,宏 paste连接它的两
..
我猜这个问题的答案是否定的,但如果有办法就太好了.为了澄清,假设我有以下宏: #define MY_VARIADIC_MACRO(X...)//在宏定义中做一些事情 我想做的是在将 X 的所有变量传递给可变参数函数之前以某种方式对其进行字符串化;这里的关键字是之前.我意识到无法从宏定义中真正访问各个参数,但是有没有办法将所有参数字符串化,可能类似于以下内容? #define MY_VARIA
..
是否可以在 C++ 中对模板参数进行字符串化?我试过这个: #include #define STRINGIFY(x) #x模板 结构体字符串化{字符串化(){std::cout
..
在进行数字求值之后是否可以进行 stringification ? 这可以通过一个简单的例子更好地解释: #define A 1#定义B 2#定义总和(A + B)#定义STR_IMPL_(x)#x#定义STR(x)STR_IMPL_(x)char * sum = STR(SUM); 按照本文所述,将生成单行: char * sum =“(1 + 2)"; 是否可以以某种方式
..
我看过此主题,它描述了通过执行"stringify"操作: #define STR_HELPER(x)#x#定义STR(x)STR_HELPER(x)#define MAJOR_VER 2#define MINOR_VER 6#定义MY_FILE"/home/user/.myapp" STR(MAJOR_VER)STR(MINOR_VER) 是否可以使用前导零进行分类?假设在这种情况下,我
..
给出 #define LOG_OBJECT(object)(NSLog(@“" #object @“%@%@:%d",[对象描述],[[NSString stringWithUTF8String:__ FILE__] lastPathComponent],__ LINE__)); 语句 LOG_OBJECT(self); 将产生: 2014-07-18 17:43:30.041 FrogCa
..
我在构建设置中定义了预处理器宏 FOO = BAR 我想把这个值转换为可以传递给方法的Objective-C字符串文字.以下#define不起作用,但应演示我正在尝试实现的目标: #define FOOLITERAL @"FOO"//希望FOOLITERAL具有@"BAR"的值myMethodThatTakesAnNSString(FOOLITERAL); 我希望我只是以某种方式缺
..
在“构建设置"选项卡下的"Apple LLVM 7.0-预处理"部分中,我将预处理器宏定义为: STR(arg)=#arg HUBNAME=STR("myhub") HUBLISTENACCESS=STR("Endpoint=sb://abc-xyz.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSi
..
我有一个通用的字符串宏,如果可能的话,我想将其转换为一个长度值字符串,所有都在宏内,因此所有内容都以.rodata结尾. #define PAYLOAD "xyz" #define PAYLOAD_LEN (sizeof(PAYLOAD)-1) 我想将PAYLOAD_LEN用作字符串,例如在另一个字符串的一部分中. const char lv_macro[] = "
..
我可以枚举C ++中的类(或结构)的char*个成员吗?如果可以,我可以将变量名称打印为字符串吗?使用预处理器? 我有一个具有所有const char *成员的类.最好有一种优雅的方法来枚举每个成员变量,并根据我得到的字符串键将名称检查为字符串. 这是可以使用的那种代码? 有人能想到一种方法吗? class configitems { public: configit
..
我有一个宏,我可以在该宏中传递参数,并使用该宏根据输入的名称定义一个新变量: #define DO_X(x) char _do_x_var_ ## x; /* other things */ 问题是,如果我传入一个struct变量,它会中断: DO_X(some_struct->thing) 成为: char _do_x_var_some_struct->thing; /
..
我想在编译命令中传递版本字符串: $ g++ -Wall -D VERSION="2013-12-03 02:15:21, commit cb060df" -o main main.cpp 在我的代码中,我有以下内容: #define TOSTR_(x) #x #define STRINGIFY(x) TOSTR_(x) #define VERSION_STR STRINGIFY
..
考虑一下: #define STRINGIFY(A) #A 如果我以后再写: STRINGIFY(hello) 编译器实际上看到了吗? #hello 我认为是#A前面的其他哈希值使我感到困惑. 解决方案 否,编译器会将参数放在引号之间,结果是: "hello" 但是请注意,宏替换不会发生在#和##附近,因此,如果您确实需要对参数进行字符串化处
..
我想先评估一个令牌,然后再将其与其他对象连接. “问题"是该标准将行为指定为 在重新检查替换列表之前,需要更多的宏名称 替换,替换中##预处理令牌的每个实例 列表(不是从参数中删除)并进行前面的预处理 令牌与以下预处理令牌串联. 因此在以下示例中, #include struct xy { int x; int y; }; struct
..
这是我的第一篇文章,因此,如果我太含糊或提供每个人都可以凭直觉假设的信息,请告诉我. 我对使用 C 进行写作非常陌生,只是想更好地了解预处理.我正在编写一个简单的程序,该程序可以直接使用gcc -Wall -std=c99 -DSEED=argument从控制台输入参数,其中我的参数应为整数,或者如果未定义-D,则用户将输入它. SEED值仅在srand()中使用.我很困惑,如果我输入
..
我试图弄清楚如何使用 C 预处理器将#define'd int连接到#define'd字符串.我的编译器是CentOS 5上的GCC 4.1.该解决方案也应该适用于MinGW. 我想在字符串上附加一个版本号,但是唯一可以使它起作用的方法是将版本号的副本定义为字符串. 我能找到的最接近的东西是引用宏参数的方法,但不适用于#define s 这是行不通的. #define MA
..