Tôi cố gắng để khai báo một biến toàn cầu config
:C: không xác định tham chiếu đến một biến khi sử dụng extern
//general.h
struct config_t {
int num;
};
extern struct config_t config; //The global variable
Sau đó, tôi xác định biến config trong general.c
:
//general.c
#include "general.h"
struct config_t config = {
num = 5;
};
Tuy nhiên, khi tôi cố gắng sử dụng biến toàn cầu 'config' trong chức năng chính của tôi, tôi nhận được lỗi:
undefined reference to `config':
Chương trình chính:
//main.c
#include "general.h"
main() {
config.num = 10;
}
Tại sao lại như vậy?
Bạn có gặp lỗi đó trong quá trình biên soạn hoặc trong khi liên kết không? –
@SergeyL. - Trong khi liên kết – Halona
Để tránh lỗi trình liên kết, _always_ sử dụng _header guards_ '#ifndef MY_HEADER_H #define MY_HEADER_H/* contents */# endif'. Bạn _must_ có điều này trong mỗi tập tin tiêu đề bạn đã từng thực hiện. – Lundin