【问题标题】:Is there any advantages of defining variable names as __00000001 in C / C++在 C/C++ 中将变量名定义为 __00000001 有什么好处吗
【发布时间】:2018-10-31 00:09:17
【问题描述】:

将变量名定义为__00000001、__00000002等有什么好处吗?

例子:

int __00000001, __00000002 = 0;
for (__00000001 = 0; __00000001 < 10; __00000001++) {
    __00000002 = __00000002 + __00000001;
}
...

更新:几年前在我的一门编程课中提到过,我记得教授说使用它有一些好处。但是,我想不起更多信息了。也许我错了。

【问题讨论】:

  • 这看起来像是反编译的代码。如果是这种情况,它只是计算机生成的自动名称。你从哪里得到的?
  • 这看起来像是由代码编写的代码。
  • 是什么让你认为会有?
  • 对于初学者来说,这是非法的 C++ 代码,因为标识符是保留的,不能使用。

标签: c++ c variable-names


【解决方案1】:

那些特定的变量名不适用于用户程序:

以下划线和大写字母或另一个下划线开头的所有标识符始终保留用于任何用途。 (C11,第 7.1.3 节,第 1 段)

所以这是一个很大的缺点。

【讨论】:

    【解决方案2】:

    混淆代码中的废话值得吗?不,除非您的目标是真正做到这一点:使您的代码尽可能难以阅读。麻烦的是,您也必须阅读它。

    有时当有人“反编译”一个程序时,你会遇到这样的代码——变量名在编译过程中不存在,所以这是反编译器在重构 C++ 程序时可以做的最好的事情。当然它不能真正重构 C++ 程序;它只能用 C++ 语法重新拼写扁平化的逻辑。哦,好吧。

    特别针对您的示例,值得注意的是,以两个下划线开头的所有标识符都保留给实现(您的编译器和标准库),因此your program has undefined behaviour

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 2013-09-16
      • 2013-11-01
      • 1970-01-01
      • 2019-03-27
      • 2023-01-19
      • 1970-01-01
      相关资源
      最近更新 更多