你能告訴我什麼是錯?當我嘗試編譯它時,我看到一個錯誤:初始化器元素不是常量。這是關於第二行,可能是關於x。「C初始化器元素不是常量」C
float x = 10;
float d = x/100;
float a = 0;
你能告訴我什麼是錯?當我嘗試編譯它時,我看到一個錯誤:初始化器元素不是常量。這是關於第二行,可能是關於x。「C初始化器元素不是常量」C
float x = 10;
float d = x/100;
float a = 0;
在C中,全局變量只能使用常量進行初始化。因此,該行
float d = x/100;
是不正確的。
您可以使用預處理器宏來實現您的目標。
#define CONSTANT 10.0
float x = CONSTANT;
float d = CONSTANT/100;
float a = 0;
初始化函數外函數必須是常量,則不允許使用x/100
因爲X可以在單位轉換(編譯)這一階段是不確定的。
作爲一種變通方法,您可以使用一個符號來使用這兩個聲明:
#define Value 10.0
float x = Value;
float d = Value/100;
float a = 0;
反正你可以使用此代碼的函數內的C99-C11的標準:
void foo(void)
{
float x = 10; //Here works
float d = x/100;
float a = 0;
...
}
附:我在同一時間寫了與薩胡相同的答案。無論如何,我會指出第一部分中解釋的原因。
你需要一個'main',不是嗎? – ForceBru
編譯器只告訴你,你不能用一些不常量的東西來初始化一個全局變量......也就是說不能與另一個變量一起初始化。 –
但是這個變量在所有程序中都是不變的 – Editt