#pragma在C中无法正常工作?

时间:2016-03-25 01:24:27

标签: c pragma

我第一次真正使用#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;

1 个答案:

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