C++ 中最难发现的错误[关闭]

2024-04-28

我很清楚,可能不会出现“c++ 中最难发现的错误”,但我仍然对其他人能想到/可能已经遇到过的事情感兴趣。

这个问题的想法是在与朋友讨论时产生的。我们同意,通过故意在您提交的源代码中包含错误来破坏 cpp 项目一定相当简单......但是我们能想到的最好的办法是使用未初始化的变量(导致运行时随机分段错误) 。我确信有更好的方法......?!

错误代码的想要的特征:

  • 第一眼看上去必须是有效的代码
  • 不得阻止代码编译(太明显)
  • 如果可能的话,错误应该看起来像是一个错误(如果被发现的话)
  • 错误必须严重到足以阻止软件发布(例如随机段错误、代码逻辑故障等)

尽管如此,虽然它必须是引人注目的,但在提交代码后它不应该是显而易见的......好吧,你明白了。

别担心,我们的考虑纯粹是理论上的(我们不打算破坏任何项目)。我们只是认为这是一个足够好的思想实验,可以与其他人分享:-)

简而言之:

破坏源代码的最微妙的方法是什么?这些方法可能在差异提交(如 git)中被忽视,但最终会阻止软件的发布?


Classic:

#define if while
#define else

埋在一些标题中。


还干扰@WhozCraig 的评论:

#define true (!!(__LINE__ % 10))

每十行一次true不会这样true,但是编译后的程序的行为将保持一致......当源代码发生变化时会发生莫名其妙的变化。

沿着这条线:

#define for if(__LINE__ % 10) for

#define NULL (!(__LINE__ % 10))

或者怎么样:

#define virtual 

这会导致严重的问题 - 但只有在使用动态调度时才会出现,这可能会使其检测更加成问题。


以类似的方式:

#define dynamic_cast static_cast

// Fail early, fail often
#define throw std::abort();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中最难发现的错误[关闭] 的相关文章

随机推荐