#define B "hello " A 然后-6ren">
gpt4 book ai didi

使用宏连接嵌套字符串

转载 作者:太空宇宙 更新时间:2023-11-04 03:16:34 27 4
gpt4 key购买 nike

这样做有问题吗

#define A "world"
#define B "hello "A // or adding a whitespace --> #define B "hello " A

然后在 printf(B"!"); 中使用 B(添加另一个连接...)?

BTW,在 C 中使用 #define B "hello "A 没有空格是可以的,但在C++11 - “文字后缀无效;C++11 要求在文字和标识符 [-Wliteral-suffix] 之间有一个空格”

据我所知,这应该没问题,因为编译器连接了字符串(如 here 所述),但是在 eclipse 上写这个时,#define 在一个 header 中文件和另一个中的 printf,我没有收到任何错误,但 eclipse 似乎无法识别 define

我知道 eclipse 是邪恶的,但这是否存在 C 语言问题(包括滥用语言功能,如果这是一个)?


header.h

#define A "world"
#define B "hello "A

抄送

#include "header.h"
#include <stdio.h>
int main(){
printf("%s", B"!");
return 0;
}

最佳答案

我尝试在 Eclipse 上运行你的代码(header.hc.c),它成功地输出了 hello world!
我的执行环境如下。

  • 操作系统:macOS 10.13.5
  • IDE:面向 C/C++ 开发人员的 Eclipse IDE,Oxygen.1a 版本 (4.7.1a),构建 ID 20171005-1200
  • 编译器(工具链):Linux GCC

您的代码可能是正确的。
如果您使用默认设置运行 Eclipse,那么您所说的 eclipse 似乎存在问题。


关于使用宏连接嵌套字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50947429/

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