我有以下一段代碼,我在需要使用它們的代碼之後定義了幾個外部(全局)變量。 爲了做到這一點,我使用關鍵字extern宣佈他們沒有保留他們的存儲。static中的關鍵字和外部變量C
int main(int argc,char *argv[])
{
extern int a;
extern double b;
/* ...use the variables somehow... */
{
int a = 10;
static double b = 2.0;
,如果我這樣做,編譯器會抱怨說我定義b變量是靜態的(因而具有內部鏈接),當在我宣佈它爲外部量。 但是,如果我倒序並在使用它之前將其定義並在main(主要是我知道的...)中聲明它,那麼永久化就沒有問題。
static double b = 2.0;
int main(int argc,char *argv[])
{
extern int a;
extern double b;
/* ...use the variables somehow... */
{
int a = 10;
那麼如果我想在定義它之前使用外部私有變量(即與內部鏈接)呢?這是禁止的,爲什麼?
一些有用的閱讀在這裏http://stackoverflow.com/questions/2841762/why-wont-extern-link-to-a-static-variable重複或許? – Bathsheba
與問題無關,但您的主簽名很奇怪:'int main void'。沒有必要'void' – SurvivalMachine
@SurvivalMachine只是一個拼寫錯誤,謝謝。 – Luca