您如何最好地格式化很长的字符串常数



我有这个:

char * str = "hahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohoho";

如何正确格式化,以80列打破?使用:

char * str = "foo
    bar";

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

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

#include <stdio.h>
#include <string.h>
int main(void)
{
    char *s = "haha
               hihi";
    unsigned i = strlen(s);
    printf("Length: %in", i);
    return 0;
}
imperator@RomaAeterna ~/P/C/undefined> gcc -Wall -Wextra undefined.c 
imperator@RomaAeterna ~/P/C/undefined> ./a.out
Length: 14

您可以使用这样的多行:

char* str = "line1"
            "line2"
            "line3";

例如。将""视为编译时间串联操作员;实际上,一个字符串的闭合"与下一个开头"之间的任何空格都足够。

最佳想法是对此使用预叠式探测器,因为这不使用内存(在嵌入式中很重要):

#define TEXT "jfsdkfnkd jfsn kjdsjkdsf ndjkksnfjkdsnf njdsjkfdnfkjdsfnd
dkf dfhfhjfbdsfhjbffjsbdhfds"
strlen(TEXT);

最新更新