我刚刚发现我正在处理的代码的某些部分错误地使用了可写/可以使用常量数据的可写静态数据。
没有为“静态”做一个愚蠢的搜索和替换 - > “static const”,有没有办法防止所有“静态”数据被写入,就像是如何使常量字符串数据可以显式写入一样?
我使用的是GCC工具链,开发目标是x86。
答案 0 :(得分:1)
您使用的某些库中可能存在可写的静态数据。 (例如标准的C和C ++库)。制作那个常量会很糟糕。
最好通过代码并手动更改内容。
您可以使用nm
获取.o
个文件中的符号列表。在nm
输出中,第一列给出了符号的类型;字母B
,C
,D
,G
或S
表示可写数据。最后一列给出了(损坏的)变量名称。可以编写一个小脚本来解析nm
输出并查找这些。
答案 1 :(得分:0)
我想更好的方法是将“const”添加到您拥有的所有变量中。你可以使用“#define static static const”(注意它会在你已经改变它的地方破坏)但我不建议这样做(会使你的代码更不易读,可能会破坏一些东西,你赢了'能够声明静态函数。)