1
は私がextern.hエクスターナル・アレイは、使用方法を、私は外部文字配列を使用したい
extern char arr[50];
私はarr
にアクセスしていますがa.cを持っている必要がありサイズ50
の言います。
と私はb.cというドライバファイルを持っています。
私は
#include"extern.h"
#include"a.h"
char arr[50];
int main()
{
//call to function in a.c
}
を持っており、私の交流で、私はこれは私にワンセグを与える
#include"a.h"
#include"extern.h"
int function1()
{
//accessing arr, say printing arr[1]
}
を持っbcのも、私はああ、私のドライバファイルに今すぐ交流
に関数の定義を持っています失敗。
私はファイル権利を含んでいますが、extern.hとb.cのexternal var宣言は正しいです。
segフォルトの原因は何ですか?
()(メイン)BCでextern.hを含めないでください:[] ARRはEXTERNせずに、 "二回" に定義にexternと1、およびその他のです...のextern勝利を、[]であるARRので、割り当てられた配列に静的に関連付けられていません。 – ydroneaud
@ydroneaud「extern wins」とはどうして?配列の宣言が "勝つ"、そうでなければリンケージエラーが発生します。問題は他の場所になければなりません(例えば、* printf *の使い方が間違っているなど)。 –