Renesas Synergy™

FAQ 105554 : C++言語を使用している時、#pragma section の指定が正しく行えない時がある。

Q: 質問

C++言語を使用している時、#pragma section の指定が正しく行えない時がある。


A: 回答 

1.C++言語を使用している時は、コンパイル単位の最初の宣言に対して
  #pragma section の指定が必要となります。

  (例)
  #pragma section _A
  extern int N;
  #pragma section

  int N 

  /* 変数NはB_Aセクションに配置されます */
  ---------------------------------
  extern int N;

  #pragma section _A
  int N 
  #pragma section
 
  /* 変数NはBセクション(デフォルト)に配置されます */
  ---------------------------------

2.静的クラスメンバ変数のセクションを指定する場合は、
  クラスのメンバ宣言と実体の定義の両方に#pragma section の指定が必要となります。

(例)
class A
{

private:
// 初期値なし
#pragma section DATA
static int data_;
#pragma section

// 初期値あり
#pragma section TABLE
static int table_[2];
#pragma section

};

// 初期値なし
#pragma section DATA
int A::data_;
#pragma section

// 初期値あり
#pragma section TABLE
int A::table_[2]={ 0, 1 };
#pragma section 

 

適用製品

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