GCC給我當試圖編譯以下警告消息:25:警告:初始值設定元素不是常量表達式
las.c:13:18: warning: initializer element is not a constant expression [enabled by default]
const int ROWS = pow (2, MESH_K);
相關的代碼部分,用於這是:
#define MESH_K 10
#define BUFF_SIZE 30
const int ROWS = pow (2, MESH_K);
我需要在代碼的後面幾點使用MESH_K和ROWS。我明白函數調用可能會讓GCC相信這不是一個常量表達式。然而,由於對pow的調用本質上是一個常量,是否有更好的方法來實現它(預處理器宏也許?)並消除警告?
我不介意犧牲這部分代碼的性能可讀性,因此歡迎任何和所有複雜的解決方案。
不知道這是否會工作,而是嘗試'const int ROWS = 1 << MESH_K;'來代替。 –
作品!併爲更優化的解決方案提供獎勵。不過,如果你能幫助並使編譯時間保持不變,我將不勝感激。 – darnir
然後試試這個:'#define POW_2_MESH_K 1 << MESH_K' –