Я пытаюсь использовать некоторую глобальную переменную в своем проекте, но не работаю. Я объявил свою переменную так:use extern in C
В файле kernel.h:
extern DBConnection * conn;
И, на мой другой файл, называемый kernel.c, я это сделать:
#include "kernel.h"
int get_info() {
conn = (DBConnection *) malloc(sizeof(DBConnection));
}
Но, в compile, я получил ошибку:
/home/fastway/VFirewall-Monitor/kernel.c:19: undefined reference to `conn'
Что я делаю неправильно?
Но, я буду использовать эту переменную во многих файлах ... –
@VitorLuis Вот для чего предназначен заголовок, поэтому все единицы перевода видят одно и то же объявление. Но вам также нужно точно одно определение - компоновщик подберет его и «исправит» другие единицы перевода. – cnicutar
@ Vitor-Luis На самом деле это не ошибка компилятора, а ошибка, обнаруженная во время стадии компоновщика. Поскольку для компиляции выражение extern более чем достаточно, когда компилятор узнал объект и его тип, объявленный в каком-либо другом файле. – Opener