こんにちは。SUZUKIです。
RL78/G14用のプログラムをCS+で開発中に良く分からない現象に遭遇しました。
プログラムは
void test(char a){
char b = 0;
b = a+10;
}
という簡単なものです。
この時に変数a,bをウォッチするとアドレスがそれぞれ[L:REG][H:REG]となっており、変数bの値は0のままでした。
動作する条件としては下記3つありました。
1.変数bの宣言をグローバルで行った場合
2.別の変数(使用しない)を関数内で宣言した場合
3.変数bの型をint型にした場合
これらの時は変数a,b共にアドレスが割り当てられ正常に動作しました。
これはどのような事が起きているのでしょうか。
宜しくお願い致します。
SUZUKIさん、こんにちは。NoMaYです。まず、コンパイラのバージョンの確認方法ですが、以下の画面コピーのように、CS+のメニュー[ヘルプ]→[バージョン情報]もしくはメニュー[ヘルプ]→[詳細バージョン情報]、の何れかを選択します。ここまでは御存知かと思いますが、この時、プロジェクトを開いた状態であれば、以下の部分にコンパイラのバージョンが表示されます。注意が必要なのは、この時、プロジェクトを開いていない状態だと、その部分にはコンパイラのバージョンは表示されない、という点です。ちなみに、上の画面コピーはCS+ for CA,CXですが、CS+ for CCでも以下の画面コピーのように事情は同じです。プロジェクトを開いた状態であれば、以下の部分にコンパイラのバージョンが表示されます。プロジェクトを開いていない状態だと、その部分にはコンパイラのバージョンは表示されないです。後ほど、もう1つ投稿します。