我的項目中使用的命令「what」用於查詢有關可執行文件(編譯日期,版本,...)信息的一些信息。 我正在修復一個錯誤,因爲我們已經改變了gcc的版本,在哪個輸出中缺少一行。該字符串在本地範圍內定義:優化器和專用於what命令的字符串之間的交互
char string_for_what = "@(#) Component comp1";
該字符串從未使用。我假設優化器已將其刪除。
我認爲正常的修正應該是在全局範圍聲明字符串。但是,如果未使用,那麼禁止將來的編譯器優化它呢?
我想過要調用strlen("@(#) Component comp1")
來確保字符串被使用,但看起來clang正在優化掉常量字符串的這個調用。
我叫fopen("@(#) Component comp1")
?如果有人用這個名字創建一個文件,我可能會丟失一個文件描述符。這似乎工作,但似乎也有點矯枉過正。
可能的複製http://stackoverflow.com/questions/ 16349557/does-gcc-have-any-options-to-add-version -info-elf-binary-file –