一种新的换行方法。它是编译器特定功能还是新语言标准?

时间:2015-10-31 14:13:13

标签: c

今天我玩了一个名为' TinyCC'我找到了一个有趣的功能。

通常如果我们要绘制树,我们将使用这样的代码:

#include <stdio.h>
main()
{
    printf("    *\n");
    printf("   * *\n");
    printf("  *   *\n");
    printf(" *******\n");
    printf("    *\n");
    printf("   ***\n");
}

或者

#include <stdio.h>
main()
{
    printf("\n\
    *\n\
   * *\n\
  *   *\n\
 *******\n\
    *\n\
   ***");
}

但我很惊讶地发现这段代码工作正常,根据我的经验肯定会报错:

#include <stdio.h>
main()
{
    printf("
    *
   * *
  *   *
 *******
    *
   ***
");
}

我认为这是c99的新功能但却找不到它。它是编译器功能还是什么?

ps,我刚刚在gcc(Ubuntu 4.8.2-19ubuntu1)4.8.2中测试过。它按我的预期报告错误。但它不是c99编译器,所以我无法得出结论。我正在寻找另一个c99编译器。

1 个答案:

答案 0 :(得分:0)

您为printf提供了一个已包含换行符的字符串,因此只打印它们。