我在查找C++編譯器如何決定要定義哪個符號或未定義符號時遇到了一些問題。我的意思是,我如何知道C++源代碼中是否將變量/函數編譯爲已定義或未定義的符號。首先,我認爲所有定義的變量/函數都將被定義爲符號,但似乎並非如此。有沒有一種方法可以準確地確定靜態,外部,內聯......關鍵字呢?C++編譯器 - 生成的符號類型
*更新 這個問題不是關於C++中的定義和聲明,而不是我的代碼是否會編譯。現在我認爲只有在C++源代碼中聲明的某些函數/變量纔會成爲定義的符號,如果我編譯代碼並用nm檢查目標文件。我需要這些信息:定義/聲明的C++函數/變量如何編譯爲定義的/未定義的符號到目標文件(例如ELF)。
你應該看看起來有什麼區別的聲明和定義在C++之間。任何好書都會告訴你。 –
目前還不清楚你在這裏問什麼。查找是否有未定義符號的最簡單方法是嘗試編譯和鏈接代碼。 –
@OliCharlesworth:在許多情況下,如果您有未定義的引用,但沒有嘗試使用這些符號的代碼,編譯器和鏈接器可能保持沉默。 –