Header file and extern keyword

前端 未结 5 2089
青春惊慌失措
青春惊慌失措 2021-01-22 21:06

I am having a lot of issue using extern variable and header files. I have read through sections of books and searched the web for hours but I haven\'t been able to figure out. A

5条回答
  •  独厮守ぢ
    2021-01-22 21:33

    You need to declare your variables before using them, and define them exactly once.

    This is a declaration:

    extern int gI;
    

    Basically this just says that there is an int named gI that will be defined elsewhere.

    This is a definition:

    int gI;
    

    This actually creates an int named gI. (Technically it is a declaration as well as a definition.)

    At the moment you have an int gI line inside of your main function, but this is just a shadowing definition. It is a local variable whose name happens to be the same as the declared global gI, but it is not the global gI. So you have a problem where you declared a variable (the global gI) and defined it zero times.

    If you were to put int gI in your sample.h file, it would then be included in both of your .c files. This would also be a problem because the rule is to define variables exactly once, and you will have defined it twice (once in each file).

    The solution is to place the extern declaration in the .h file, and the definition in one of your .c files.

提交回复
热议问题