win xp visual c++.net 2003
お世話になります。初心者です。
あるビルドスイッチによりインターフェイスとなる関数名を
一文字だけ変えたく思っております。
例えば、
#ifdef A_SWITCH
int Afunction1(void);
int Afunction2(void);
#else
int function1(void);
int function2(void);
#endif
と定義するのではなく
イメージ的には以下のように関数の定義は
一箇所のみとしたいのです。
(当然下の例ではビルドエラーがでます)
#ifdef A_SWITCH
#define A_FUNC a
#else
#define A_FUNC
#endif
int FUNC(function1)(void);
int FUNC(function2)(void);
このようなことは実現可能でしょうか?
もし、ご存知の方がいらっしゃりましたらご教授いただけませんでしょうか?
#ifdef A_SWITCH
#define FUN(FUNC) a#FUNC
#else
#define FUN(FUNC) FUNC
#endif
void FUN(function1)() { /* ... */ }
void FUN(function2)() { /* ... */ }
int main() {
FUN(function1)();
FUN(function2)();
}
…これじゃダメすか?
ご教授いただいた方法を試してみたのですが、
構文エラーがでてしまいます(TT)
error C2143: 構文エラー : '{' が 'string' の前に必要です。
a#FUNC → a##FUNC でいけました(^^)
有難うございました。