旧的C编译器在#ifndef #define上扼流圈

Pro*_*ica 13 c c-preprocessor

我试图将一些相对现代的C代码移植到较旧的编译器.

看起来,这个编译器(DICE)在第一个头文件和第一次出现这个习语时窒息:

#ifndef SOMETHING
#define SOMETHING

...  

#endif /* SOMETHING */
Run Code Online (Sandbox Code Playgroud)

它在标题的第二行死亡: DCPP: "../../code/someheader.h" L:2 C:0 Error:39 Syntax Error

改变#define SOMETHING 1没有区别.

所以我真的有两个问题,我是否使用DICE使用了错误的选项,或者C程序员在过去使用过ifndef-define等其他成语?

参考文献:

tin*_*man 16

如果是这个C编译器,那么通过查看(src\dcpp\cpp.c),您可以看到换行符只包含回车符而不包含换行符.

如果你有一行以CRLF结尾,那么当编译器在行的开头删去空格时,它不会在#出现语法错误之前删除换行符,因为从#那个开始的预处理程序指令必须是第一个非空白字符.这条线.

  • 嘿,你打败了我一秒钟:)我会删除我的答案,享受代表. (3认同)