私は2つの翻訳単位を持っています..
file1.c
#include<stdio.h>
#include<string.h>
extern char a[90];
int main(int argc,char ** argv){
//printf("%s ",a);
strcat(a,"y Code");
printf("%s",a);
return 0;
}
file2.c
char a[4]={'Q','u','i','r'};
プロジェクトのコンパイルとリンクではエラーは発生しませんが、プログラムを実行するとセグメンテーション違反エラーが発生します(デバッグモードで)。リンカが file1.c の識別子 a の間違ったリンクを file2.c の定義 a に解決する方法があると思います。同じまたは異なる翻訳単位で識別子をリンクするためにリンカーが使用するメカニズムは何ですか?