gpt4 book ai didi

c - 在两个字符串文字之间放置定义宏

转载 作者:太空狗 更新时间:2023-10-29 15:31:33 24 4
gpt4 key购买 nike

我知道可以像这样将定义的宏与字符串文字连接起来

#define R "car"
const char * s1 = "foo"R; //s1="foocar"

但是当我尝试像这样将 R 放在两个字符串文字之间时

#define R "car"
const char * s1 = "foo"R"bar"; //compile-time error

我收到编译时错误 error: stray 'R' in program。上面第二个例子如何实现,使得s1 = "foocarbar"?

最佳答案

C++ 有一个称为“原始字符串文字”的特性,由字母 R 引入。

gcc 显然支持 C 中的 C++ 风格的原始字符串文字作为扩展。如果您为宏使用的名称不是 R,就不会出现此问题。

字符串文字串联不要求字符串文字相邻。而不是这样:

#define R "car"
const char * s1 = "foo"R"bar";

你可以这样写:

#define R "car"
const char * s1 = "foo" R "bar";

但您的原始代码是有效的 C,如果您使用诸如 -std=c11 之类的选项来使 gcc 更符合标准,gcc 应该会接受它。

请注意,如果您为宏使用了 R 以外的名称,您就不会遇到问题。

关于c - 在两个字符串文字之间放置定义宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46778945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com