-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 回答