2012-05-20 35 views
0

我已經包含在2 .c文件AC和BC頭文件啊聲明的外部變量錯誤與鏈接器爲一個頭文件

#ifndef A_H_INCLUDE 
#define A_H_INCLUDE 
extern int g; 
void chk(int f); 
#endif 

交流

# include <stdio.h> 
# include "a.h" 

void chk(int f) 
{ 
    if(g==1) printf("\n CORRECT\n"); 
    else printf("\n INcorrect::%d: \n",f); 
} 

BC

# include <stdio.h> 
# include "a.h" 

int main() 
{ 
    int g; 
    printf("\n ENTER::"); 
    scanf("%d",&g); 
    chk(56); 
    return 0; 
} 

在編譯代碼它給我的錯誤

gcc a.c b.c a.h -o j 
/tmp/ccEerIPj.o: In function `chk': 
a.c:(.text+0x7): undefined reference to `g' 
collect2: ld returned 1 exit status 

我已經檢查Variable declaration in a header file和我想我做同樣的事情。

任何建議或指向代碼中的問題將不勝感激。

非常感謝

回答

3

添加int g;a.c文件的全球範圍內提供了變量的定義。

(如果你想知道,你main()函數內部當地變量沒有聯動,因爲它是在塊範圍內的自動變量。它無關,與你的問題。)

+0

我不好,我錯過了。感謝您的建議 – abhi