A. Linux centos7使用make編譯時報錯,提示C文件初始值設定元素不是常量,請問應該怎麼解決
static const 初始化值必須為常量,就是只能是編譯時就能確定的值,而不是運行時運算出來的值.
得看看makefloatx80是什麼,如果是一個普通函數,那麼出現這個錯誤是應該的.
考慮到是官方庫,可能是使用的編譯器版本不同.
B. visual studio 如何在編譯期確定字串長度,特殊宏之類的
宏的作用,只是在編譯期間完成替代,並不能實現計算。因此不要考慮宏實現,這個沒什麼可行性。
編譯期間數羨胡槐值確定,其實可以通過const關鍵字實現,但說實話,這個是「消耗空間換時間」,如果有log的函數太多,太分散,並不值得。
如果log比較集中的在幾個函數中,那麼可以這么做:
constintfnamelen=strlen(__FUNCTION_);這樣,因為編譯之後__FUNCTION_是一個常量,const 變數會直接從編譯器的符號表中取值(做爛這個叫C++的常量折疊),不會兄友反復計算。
log(__FUNCTION_,fanmelen);