1

コードを残して去った私の未知の前任者。私はそれらのいくつかを使用しようとしますが、彼のコードは奇妙に見えます.

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ファイルで定義された変数を処理するにはどうすればよいですか?

ありがとう

4

1 に答える 1