我已经编程了C很长一段时间了.在这段时间里,我了解到在第一列放置预处理程序指令之前的"#"字符是一种常见的约定.
例:
#include <stdio.h>
int main(void) {
#ifdef MACRO1
#ifdef MACRO2
puts("defined(MACRO1) && defined(MACRO2)");
#else
puts("defined(MACRO1)");
#endif
#else
puts("!defined(MACRO1)");
#endif
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当人们缩进他们的预处理器指令时,他们通常会这样做:
#include <stdio.h>
int main(void) {
#ifdef MACRO1
# ifdef MACRO2
puts("defined(MACRO1) && defined(MACRO2)");
# else
puts("defined(MACRO1)");
# endif
#else
puts("!defined(MACRO1)");
#endif
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我不认为我曾见过有人像这样格式化:
#include <stdio.h>
int main(void) {
#ifdef MACRO1
#ifdef MACRO2
puts("defined(MACRO1) && defined(MACRO2)");
#else
puts("defined(MACRO1)");
#endif
#else
puts("!defined(MACRO1)");
#endif
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果C语言标准要求#-character应该在第一列.
那么上面的第三个选择是否合法?
如果以上所有案件都合法,那么我想知道这是否合法.
#include <stdio.h>
int main(void) { …Run Code Online (Sandbox Code Playgroud) c syntax conditional-compilation language-lawyer c-preprocessor