私が取り組んでいるコードの一部が、定数データを使用できる/使用すべきである書き込み可能な静的データを誤って使用していることを発見しました。
「static」->「staticconst」のばかげた検索と置換を行う以外に、定数文字列データを明示的に書き込み可能にする方法のように、すべての「静的」データが書き込み可能になるのを防ぐ方法はありますか?
私はGCCツールチェーンを使用しています。開発ターゲットはx86です。
使用しているライブラリの一部には、おそらく書き込み可能な静的データがあります。(標準のCおよびC ++ライブラリなど)。その定数を作成するのは悪いことです。
コードを調べて手動で変更する方がおそらく良いでしょう。
nm
ファイル内のシンボルのリストを取得するために使用でき.o
ます。出力のnm
最初の列は、シンボルのタイプを示しています。文字B
、、、、またはは書き込み可能なデータC
を示します。最後の列は(マングルされた)変数名を示します。出力を解析してこれらを探すための小さなスクリプトを書くことができます。D
G
S
nm
私はあなたが持っているすべての変数に「const」を追加するのがより良い方法だと思います。「#definestaticstaticconst」を使用することもできますが(既に変更した場所では壊れることに注意してください)、そうすることはお勧めしません(コードが読みにくくなり、一部が壊れてしまう可能性があります。静的関数を宣言することができます)。