#pragma 在 C 中不能正常工作?
#pragma not working right in C?
我第一次真正使用#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");
}
我用 "gcc file.c" 和 "clang file.c" 编译。
我得到的输出是 "I am in main"
#pragma 在编译器之间不一致。它仅用于特定 compilers/platforms 的奇怪情况。对于像这样的一般程序,永远不要使用它。
更好的方法是使用#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");
}
我第一次真正使用#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");
}
我用 "gcc file.c" 和 "clang file.c" 编译。 我得到的输出是 "I am in main"
#pragma 在编译器之间不一致。它仅用于特定 compilers/platforms 的奇怪情况。对于像这样的一般程序,永远不要使用它。
更好的方法是使用#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");
}