编译器错误 C2001

常量中有换行符

除非执行以下操作,否则无法在第二行上继续字符串常量:

  • 用反斜杠结束第一行。

  • 用双引号关闭第一行的字符串,并用另一个双引号打开下一行的字符串。

用 \n 结束第一行是不够的。

示例

以下示例生成 C2001:

// C2001.cpp
// C2001 expected
#include <stdio.h>

int main()
{
    printf_s("Hello,
             world");
    printf_s("Hello,\n
             world");
}

换行符后,字符串常量中包含下一行开头的空格。 上面所示的示例均未将换行符嵌入字符串常量中。 可以嵌入换行符,如下所示:

// C2001b.cpp
#include <stdio.h>

int main()
{
    printf_s("Hello,\n\
             world");

    printf_s("Hello,\
             \nworld");

    printf_s("Hello,\n"
             "world");

    printf_s("Hello,"
             "\nworld");

    printf_s("Hello,"
             " world");

    printf_s("Hello,\
             world");
}