0

研究项目在这里。在我的 C++ 库中,我包含 C 文件:

#include "aprogram.c"

我通过重载(几乎)所有运算符来象征性地执行它。

我必须能够检测(condition) ? this : that和提取condition,thisthat在我的符号执行库中使用。但是,SO 1SO 2SO 3等已经帮助我意识到?:不能超载。

  • 有什么办法让我强行超载?:吗?
  • 我可以?:在不实际更改文件的情况下将包含的 C 文件中的所有语句更改为 ifelse 语句吗?
4

2 回答 2

1

根据 C++ 标准,您不允许重载?:您能做的最好的事情就是使用 C 宏(但这会导致糟糕的代码)。

于 2013-10-30T20:47:57.713 回答
0

宏在 1970 年代被添加到 C 编译器中以简化编译器设计。宏由“C 预处理器”处理。不幸的是,这个预处理器很幼稚,只做文本替换。生成的代码通常过于复杂、难以查看(使用 -E 或 -P 编译选项)并且难以调试。现在你应该使用编译器来处理你的所有代码(预处理器通常仅限于#includes 和条件编译)。

不幸的是,Bjarne Stroustrup 决定不允许您重载 ?: 三元 - 不是出于任何深层的技术原因,而是因为它是唯一的三元运算符,他认为修改编译器的努力是不合理的。

于 2013-10-31T19:52:52.047 回答