c/c++语言开发共享C字符串追加

我有两个我要追加的C字符串,结果应该分配给lhs变量。 我看到了一个静态初始化代码,如:

char* out = "May God" "Bless You";

打印输出真是"May GodBless You" 。 我理解这个结果可以输出一些未定义的行为。

代码实际上是在生产中,从来没有给出错误的结果。 并不是说我们只在一个地方发表过这样的声明。 它可以在非常稳定的代码的多个地方看到并用于形成sql查询。

C标准是否允许这种连接?

    是的,这是有保证的。

    摘自https://en.wikipedia.org/wiki/C_syntax#String_literal_concatenation :

    相邻的字符串文字在编译时连接在一起; 这允许将长字符串拆分为多行,并且还允许在编译时将C预处理器定义和宏生成的字符串文字附加到字符串

    是。 在C中允许这种连接,它不是未定义的行为。

    虽然我认为它应该产生“May GodBless You”(因为引用的部分没有空格)

    标准说

    5.1.1.2翻译阶段

    6.连接相邻的字符串文字标记。

    因此,Solaris编译器正在做正确的事情。

      以上就是c/c++开发分享C字符串追加相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

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

      ctvol管理联系方式QQ:251552304

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

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

      精彩推荐