gpt4 book ai didi

c++ - 这个函数调用会被g++优化吗?

转载 作者:行者123 更新时间:2023-11-30 02:05:14 25 4
gpt4 key购买 nike

我有以下情况:

void function(params)
{
#ifdef _MULTIPLAYER
if (isConnected)
{
if (isClient)
{
requestFunctionRemotely(params)
return;
}
else if (isServer)
{
call realFunction(params) remotely on client;
}
}
#endif

realFunction(params);
}

realFunction(params)
{
...
}

在这种情况下,我可以使用单人游戏实例或多人游戏来构建我的项目。

之所以使用这种方法,是因为在我的代码周围调用了 function(params),所以通过这种方式,我可以毫无问题地附加到尽可能低的级别。

我必须拆分 functionrealFunction 因为客户端收到的远程响应必须通过 realFunction 执行以避免循环(我可以更改函数原型(prototype)添加一个标志,但我会破坏很多代码)。

我担心的是禁用 _MULTIPLAYER 定义时的性能。我有很多 function(params) 并且我会调用它们一千次。我将不得不对所有这些方法使用这种方法。 g++ 会在找到时优化掉双重调用吗

function(params) {
realFunction(params);
}

function(params) {
// body of realFunction
}

有没有办法在每个类似的情况下强制执行它?

作为提示:我目前使用 -O2 标志

最佳答案

如果你想确定你可以反转你的模式并使用模板参数。这样你就可以确定编译器会在编译时删除 if (false)

template <bool isMulti>
void Function(params)
{
if (isMulti)
MultiFunction();

// real function code
}

void MultiFunction(params)
{ }

注意:

如果使用类,您可以将模板参数上移到类中以简化。

关于c++ - 这个函数调用会被g++优化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9712325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com