-3

たとえば、windows と mac で同じ関数を定義し、次のような異なる戻り値を使用したとします。

#ifdef _WIN32

// Windows code
int porting(int input){
  return input + 360;
}

#endif

#ifdef __APPLE__

// Mac code
int porting(int input){
  return input + 180;
}

#endif

porting()複数の定義を持つ代わりに、ユーザーが内部で実行するコードを指定できるようにする方法はありますか?

4

1 に答える 1

1

コンパイル済み言語である C++ には、eval()多くのインタープリター言語 (PHP や Javascript など) が持つ機能がありません。ユーザーが指定したテキストのコードを実行時に実行する方法はありません。

おそらく、あなたのニーズにはコールバックで十分でしょうか?

例:

typedef int (*userfunction)(int);

userfunction thefunction;

void set_user_function(userfunction uf)
{
    thefunction = uf;
}

int porting(int input)
{
    return thefunction(input);
}
于 2012-06-19T20:25:16.550 に答える