[英]What is wrong with using extern in C like that?
我已經在此搜索過一些內容,但我仍然不明白。
文件1.h
extern int *game_array[5];
播放器
#include "file1.h"
void *delete_player(player_struct *player)
{
... //some code
game_array[5] = 5; //undefined reference to `game_array`
... //some code
}
當我不使用extern時,它“工作正常” =我可以在沒有錯誤的情況下構建它,但是程序尚未完成..我認為使用extern很好,但是出了點問題..我想使用這個game_array ... array服務器上所有我的.c源文件中的游戲,我的應用程序中只有該數組的一個實例。
您需要在其中一個.c
文件中定義 game_array
,並將該文件編譯/鏈接到可執行文件中。
定義將如下所示:
int *game_array[5];
您的file1.h
所說的基本上是“我的項目中某處存在一個名為game_array
的變量,並且具有game_array
類型” 。 但是,該變量實際上並不存在,直到您在某處(通常在.c
文件中)定義了它。
extern
關鍵字基本上意味着,即使未定義符號,編譯器也不應抱怨該符號,因為它將在鏈接時可用。
因此,如果未在鏈接時定義它,則顯然會出現錯誤。
您需要在一個C文件中提供一個實現:
就像是:
#include "file1.h"
int * game_array[ 5 ];
void * delete_player( player_struct * player)
{
...
編寫extern int *game_array[5];
意味着在某個文件中的某個地方,有一個game-array
的實際定義-即,沒有extern.
的聲明extern.
您沒有提供這些信息,因此鏈接器抱怨實際變量在任何地方都不存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.