我第一次真正使用#pragma并且由于某些原因我没有获得与在线发布的相同的输出,功能不打印出来,我使用GCC v5.3和clang v .3.7。这是代码
#include<stdio.h>
void School();
void College() ;
#pragma startup School 105
#pragma startup College
#pragma exit College
#pragma exit School 105
void main(){
printf("I am in main\n");
}
void School(){
printf("I am in School\n");
}
void College(){
printf("I am in College\n");
}
我使用&#34; gcc file.c&#34;和&#34; clang file.c&#34;。 我得到的输出是&#34;我在主要&#34;
答案 0 :(得分:0)
#pragma在编译器之间不一致。它仅用于特定编译器/平台的奇怪情况。对于像这样的一般程序,不应该使用它。
实现这一目标的更好方法是使用#define和#if。例如:
#include<stdio.h>
#define SCHOOL 1
#define COLLEGE 2
#define EDUCATION_LEVEL COLLEGE
void None();
void School();
void College();
void main(){
#if EDUCATION_LEVEL == SCHOOL
School();
#elif EDUCATION_LEVEL == COLLEGE
College();
#else
None();
#endif
}
void None(){
printf("I am in neither school nor college\n");
}
void School(){
printf("I am in School\n");
}
void College(){
printf("I am in College\n");
}