代码之家  ›  专栏  ›  技术社区  ›  Christoffer

检测可写静态数据

  •  1
  • Christoffer  · 技术社区  · 14 年前

    我刚刚发现,我正在处理的代码的某些部分错误地使用了可以/应该使用常量数据的可写静态数据。

    除了对“static”->“static const”进行愚蠢的搜索和替换之外,是否有任何方法可以防止所有“static”数据可写,就像如何使常量字符串数据显式可写一样?

    我使用的是GCC工具链,开发目标是x86。

    2 回复  |  直到 14 年前
        1
  •  1
  •   user9876    14 年前

    您使用的某些库中可能有可写的静态数据。(如标准C和C++库)。让那个警察来是不好的。

    最好是检查代码并手动更改。

    你可以用 nm 在你的 .o 文件夹。在 纳米 输出,第一列给出符号的类型;字母 B , C , D , G S 指示可写数据。最后一列给出(损坏的)变量名。可以编写一个小脚本来解析 纳米 输出并查找这些。

        2
  •  0
  •   fbafelipe    14 年前

    我想最好的方法是把“const”加到所有变量中。您可以使用“#define static static const”(请注意,无论您在哪里更改它,它都会中断),但我不建议您这样做(这会使您的代码可读性大大降低,并且可能会中断某些内容,并且您将无法声明静态函数)。