類似した関数名を1箇所の定義ですましたい – プログラミング – Home

類似した関数名を1箇所の定義ですました...
 
通知
すべてクリア

[解決済] 類似した関数名を1箇所の定義ですましたい


初心者です
 初心者です
(@初心者です)
ゲスト
結合: 21年前
投稿: 13
Topic starter  

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);

このようなことは実現可能でしょうか?
もし、ご存知の方がいらっしゃりましたらご教授いただけませんでしょうか?


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

#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)();
}

…これじゃダメすか?


返信引用
初心者です
 初心者です
(@初心者です)
ゲスト
結合: 21年前
投稿: 13
Topic starter  

ご教授いただいた方法を試してみたのですが、
構文エラーがでてしまいます(TT)

error C2143: 構文エラー : '{' が 'string' の前に必要です。


返信引用
初心者です
 初心者です
(@初心者です)
ゲスト
結合: 21年前
投稿: 13
Topic starter  

a#FUNC → a##FUNC でいけました(^^)
有難うございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました