#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");
}