Renesas Synergy™

FAQ 104086 : ソースファイルによって、構造体、共用体、クラスのメンバ変数に対して正常に参照、設定できない場合があります。

 

Q: 質問

ソースファイルによって、構造体、共用体、クラスのメンバ変数に対して正常に参照、設定できない場合があります。

 


A: 回答

構造体、共用体、クラスのメンバ変数の有無をマクロやコンパイラオプション(-define)により

切り替えている部分が無いか ご確認下さい。

また、そのマクロやコンパイラオプションが、ソース間で共通に設定されているかをご確認下さい。

 

例えば、下記のような構造体宣言があったとします。

 

 

<test.h>struct _tag{#ifdef _DEBUG  int debug;#endif  int m0;};extern struct _tag a;

下記 test1.c と test2.c では、_DEBUG マクロの有無により動作が異なります。

C++言語のクラス宣言の場合には、基底クラスにこのような記述があると、 派生クラスのクラスメンバ変数に正常にアクセスできない場合があります。

 

 

#define _DEBUG  /* あるいは、コンパイルオプションで設定している */

#include "test.h"

...

  a.m0 = 0;

 

 

#include "test.h"

...

  a.m0 = 0;

 

適用製品

SuperHファミリ用C/C++コンパイラパッケージ
H8SX,H8S,H8ファミリ用C/C++コンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください