所以我創建了兩個文件:編譯多個文件的錯誤
file1.c中
#include "file2.h"
...
int *p; <-GLOBAL VARIABLE
...
void main(){
printer();
}
file2.c中
#include "file1.h"
void printer(){
*p = 5;
printf("%d",*p);
}
file1.h
extern int *p;
file2.h
extern void printer(void);
代碼編譯。但是,當我運行它時,出現分段錯誤。我試圖在任何地方尋找解決方案,但找不到一個好的解決方案。
我試着用file122.h替換printer(void)
,用printer()
沒有結果(也不確定它是否正確)。
有沒有人可能會看到我的問題的解決方案?
只是作爲一個位的信息:不要在頭文件中聲明變量的實例。相反,在.c文件之一中的任何函數之外聲明全局變量,然後在頭文件中聲明相同的變量,前綴爲'extern'。任何使用該全局變量的文件都可以通過#include頭文件訪問它,然後使用該變量,就好像它是當前的.c文件的本地一樣。 – user3629249
指針'p'未指向任何特定的用戶內存。在進程初始化爲0x00的全局內存中,訪問地址0(不是用戶可訪問的內存的一部分)是導致seg故障事件的原因。 – user3629249
* p表示p指向的值是否等於5? –