如何最好地在C中格式化很长的字符串常量?

The*_*man 1 c string formatting strlen

我有这个:

char * str = "hahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohoho\0";
Run Code Online (Sandbox Code Playgroud)

我该如何正确设置其格式,以80列中断?使用方法:

char * str = "foo\
    bar";
Run Code Online (Sandbox Code Playgroud)

似乎是一个非常糟糕的主意,它导致未定义的行为,使strlen()返回的废话值

编辑:这是我正在谈论的未定义的行为:

#include <stdio.h>
#include <string.h>

int main(void)
{
    char *s = "haha\
               hihi\0";

    unsigned i = strlen(s);

    printf("Length: %i\n", i);

    return 0;
}

imperator@RomaAeterna ~/P/C/undefined> gcc -Wall -Wextra undefined.c 
imperator@RomaAeterna ~/P/C/undefined> ./a.out
Length: 14
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 5

您可以使用多行,如下所示:

char* str = "line1"
            "line2"
            "line3";
Run Code Online (Sandbox Code Playgroud)

例如。认为""它是一个编译时串联运算符;实际上,"一个字符串的关闭与下一个字符串的打开之间的任何空格"都足够。