C是否支持原始字符串文字?

时间:2014-07-20 11:56:45

标签: c string escaping string-literals

C ++ 11增加了对原始字符串文字的支持,例如:

R"foo(A " weird \"
 string)foo"

C有这样的事吗?如果是这样,在什么版本的标准? C11?如果没有,是否有人知道它是否正在计划,是否有任何编译器支持它?

2 个答案:

答案 0 :(得分:9)

  

C有这样的事吗?如果是这样,在什么版本的标准? C11

C(C90,C99,C11)不支持此功能或任何其他类似功能。

  

如果没有,有人知道它是否正在计划中

我不知道,但通常C委员会强烈反对在C中加入新功能。

  

如果有任何编译器支持它?

我刚测试了它,显然支持最近的gcc版本作为GNU扩展(使用-std=gnu99-std=gnu11进行编译)。

例如:

printf(R"(hello\nworld\n)");

编译并给出预期的行为。

答案 1 :(得分:0)

///我的经验。使用代码块,GCC MinGW。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <windows.h>
///#include <threads.h>
#include <conio.h>
/// #include <dos.h>
#include <direct.h>

int main(void)

{
  printf(R"(.C with a Capital C file format does not support raw string )");
  printf("\n");
  printf(R"(.c with a small c file format does support raw string )");
  printf("\n");
  printf(R"( Raw string did not support \n new line )");
  printf("\n");

  printf(
      R"(More reading material at - https: // en.wikipedia.org/wiki/String_literal#Raw_strings;)");
  printf("\n");
  printf(
      R"(More reading material at - https: // en.wikipedia.org/wiki/String_literal;)");
  printf("\n");
  printf(
      R"(More reading material at - https://stackoverflow.com/questions/24850244/does-c-support-raw-string-literals;)");
  printf("\n");
  printf(
      R"(More reading material at - https: // docs.microsoft.com/en-us/cpp/c-language/c-string-literals?view=vs-2019)");
  printf("\n");
  printf(
      R"(More reading material at-https: // docs.microsoft.com/en-us/cpp/c-language/string-literal-concatenation?view=vs-2019)");
  printf("\n");
  /// Raw string.

    printf(R"(More reading material at - https://www.geeksforgeeks.org/const-qualifier-in-c/;)");
  printf("\n");
  
  
  return 0;
}