コードを残して去った私の未知の前任者。私はそれらのいくつかを使用しようとしますが、彼のコードは奇妙に見えます.
1.彼がしたことは、ヘッダーではなくcファイルで変数を定義することです:変数.c
CHGR_CMD comand[MAX_COMANDS] __attribute__ ((section ("external")));
RAWDAT rawdat[MAX_RAWDAT] __attribute__ ((section ("external")));
SC_TEST *curr_test[NUMCHANS]; /* array of pointers to current testrec */
SC_TESTSETUP chparam[NUMCHANS] __attribute__ ((section ("external")));
SC_HOLDSTAT stats[NUMCHANS] __attribute__ ((section ("external")));
RAWDAT *bufs[NUMCHANS];
//FACTS control[NUMCHANS];
short ntest;
short new_dbuff;
short start_err;
short update_status;
long status_sent;
short load_done;
char h_lok; ....
2 別の c ファイルの init_vars() は上記の変数を初期化します: init_vars.c
memset((char *) rawdat,0 ,sizeof(rawdat));
memset((char *) curr_test,0 ,sizeof(curr_test));
memset((char *) chparam,0 ,sizeof(chparam));
memset((char *) stats,0 ,sizeof(stats));
memset((char *) bufs,0 ,sizeof(bufs));
memset((char *) comand,0 ,sizeof(comand));
ntest = 0;
new_dbuff = 0;
start_err = 0;
3.main.c で init_vars() を呼び出す
「variables.c」を init_vars.c に直接インクルードしようとしたのは初めてですが、以下のエラーが発生しました。
#10056 symbol "ad_lok" redefined: first defined in "./variables.obj"; redefined in "./init_vars.obj" sCharger_Test_v1 C/C++ Problem
ad_lok 変数だけでなく、variables.c で定義されているすべての変数でエラーが発生しました。
variables.c を variables.h に変更しても、同じエラーが発生します。
ヘッダーファイルではなくcファイルで定義された変数を処理するにはどうすればよいですか?
ありがとう