前に一度配布の方法でお世話になりましたkzです。前件は本当にありがとうございました^^
今回はヘッダで宣言しているマクロを関数で書き換えたいのですが、どうもうまくいきません。
ヘッダの定義はこんな感じです。
#define UP KEY_INPUT_E
#define DOWN KEY_INPUT_D
#define LEFT KEY_INPUT_S
#define RIGHT KEY_INPUT_F
#define ENTER KEY_INPUT_L
#define BACK KEY_INPUT_K
これをcommand_fload関数で書き換えます。
command_fload()
int FP;
char botan_read[256],temp[256];
FP=FileRead_open("./txt/ボタン構成.ini");
FileRead_gets(botan_read,256,FP);
FileRead_gets(botan_read,256,FP);
sscanf(botan_read,"%s",temp);
#define UP botan_read
こんな感じです。
一応関数内では定義が変わってるんですが、この関数を抜けると元のマクロの定義に戻ってしまいます。
これをほかの関数でも変わるようにしたいのですがどうすればいいでしょうか??
ヘッダでのマクロの定義の書き換えって関数内でできますか?
Re:ヘッダでのマクロの定義の書き換えって関数内でできますか?
キー配置を設定してあるテキストファイルを読み込み
その設定でキー配置を変えるようにしているみたいですが
このような可変的なものですよね?
マクロは基本的に定数を扱うものですから、可変的なことはできません。
変数を使いましょう。
>この関数を抜けると元のマクロの定義に戻ってしまいます。
これは、正確にはマクロ定義の位置から翻訳単位の終端もしくは
#undefが定義されるまでに効力があるので、別の翻訳単位や
マクロ定義より上にあるものが置き換えられることはありません。
その設定でキー配置を変えるようにしているみたいですが
このような可変的なものですよね?
マクロは基本的に定数を扱うものですから、可変的なことはできません。
変数を使いましょう。
>この関数を抜けると元のマクロの定義に戻ってしまいます。
これは、正確にはマクロ定義の位置から翻訳単位の終端もしくは
#undefが定義されるまでに効力があるので、別の翻訳単位や
マクロ定義より上にあるものが置き換えられることはありません。