不能单独通过返回类型来区分超载功能,但这不是一个真正的错误
我有某些功能的不同变体,这些功能是由预处理器定义选择的
#if defined(V2)
bool getAICoord(TTT_Game& game) {
//
// 4x4 field
//
return false;
}
#elif defined(V3)
bool getAICoord(TTT_Game& game) {
//
// renju field
//
return false;
}
#else // V1
bool getAICoord(TTT_Game& game) {
// some code
return false;
}
#endif
,并且它的编译很好,但是IntelliSense会给我错误
无法单独通过返回类型区分
我知道它不是完美的,但是IS是有什么方法可以将此功能排除在其清单之外或类似的清单之外?
I have different variants of some function, that are choosed by preprocessor definition
#if defined(V2)
bool getAICoord(TTT_Game& game) {
//
// 4x4 field
//
return false;
}
#elif defined(V3)
bool getAICoord(TTT_Game& game) {
//
// renju field
//
return false;
}
#else // V1
bool getAICoord(TTT_Game& game) {
// some code
return false;
}
#endif
And it compiles well, but IntelliSense gives me error
cannot overload functions distinguished by return type alone
I know, that it is not perfect, but is there any way to exclude this one function from its checklist or something like this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以仅键入一次函数签名并使用功能正文上的预处理器定义来解决此错误;例如
You could workaround this error by only typing the function signature once and using the preprocessor definitions on the body of the function; e.g.
预处理器宏众所周知,因为它们是代码的纯文本转换,而不是作为语言本身的一部分。
而不是使用宏,如果Constexpr
使您可以作为语言本身的一部分进行有条件的汇编,而不是作为预处理程序的步骤:这具有许多优点:
Preprocessor macros notoriously confuse IDEs, as they are pure text transformation of the code, instead of being part of the language itself.
Instead of using macros,
if constexpr
lets you do conditional compilation as part of the language itself instead of doing it as a preprocessor step:This has a number of advantages: