我正在使用C语言编写一个程序,该程序根据符号常量是否被定义而表现出不同的行为。以一个简单的例子为例,我的第一反应是这样编写:
#include <stdio.h>
#define TEST
int main(void) {
int num;
#ifdef TEST
num=1;
printf("YES\n");
#else
num=0;
printf("NO\n");
#endif
printf("%d\n", num);
return 0;
}
然而,当我尝试使用vim的
gg=G
自动缩进我的代码时,我的缩进被删除了:#include <stdio.h>
#define TEST
int main(void) {
int num;
#ifdef TEST
num=1;
printf("YES\n");
#else
num=0;
printf("NO\n");
#endif
printf("%d\n", num);
return 0;
}
当然,如果我尝试对以下内容进行自动缩进(其中包含实际命令),就会出现混乱:
#ifdef TEST1
commands
#ifdef TEST2
commands
#else
#ifdef TEST3
commands
#endif
commands
#endif
#endif
那么,有什么我可以做的让上面的缩进被视为默认值吗?
#else #ifdef X
翻译为#elif defined(X)
。 - Eugene Sh.test
定义为static const bool
并使用普通的if
语句,则自动缩进将正常工作,并且编译器将优化检查。那么有什么不喜欢的呢? - rici