g++編譯報錯原因分析“was not declared in this scope"
阿新 • • 發佈:2019-02-09
在編譯程式的時候,提示:“was not declared in this scope"。
經過分析後發現原因如下:
1.變數、函式、或者類未宣告或者定義。這是最簡單的情況~卻是我經常犯的錯誤(基本也是這幾個原因中可能性最大的)
另外,網上有人指出以下原因也會導致該提示錯誤:
如果在file b中用到了file a中的變數、函式、類,那麼由於#ifndef和#define的作用,file b中的#include <file a>語句執行時無法執行file a中的#include <file b>造成錯誤。
3.標頭檔案起名字的時候不小心和庫中的標頭檔案重名了,而在程式中又用了這個庫的這個標頭檔案。
這樣, 就造成巨集重名了,一定有一個頭檔案因為 #ifndef失去了效果。別的檔案自然找不到這個標頭檔案中的宣告,就提示 was not decleared in this scope了
經過分析後發現原因如下:
1.變數、函式、或者類未宣告或者定義。這是最簡單的情況~卻是我經常犯的錯誤(基本也是這幾個原因中可能性最大的)
另外,網上有人指出以下原因也會導致該提示錯誤:
2.標頭檔案相互#include時,導致了依賴關係錯誤。比如,標頭檔案形成了一個環形依賴,
/***file a ****/ #ifndef FILE_A_ #define FILE_A_ #include <file b> #endif /****file b ***/ #ifndef FILE_B_ #define FILE_B_ #include <file a> #endif
如果在file b中用到了file a中的變數、函式、類,那麼由於#ifndef和#define的作用,file b中的#include <file a>語句執行時無法執行file a中的#include <file b>造成錯誤。
3.標頭檔案起名字的時候不小心和庫中的標頭檔案重名了,而在程式中又用了這個庫的這個標頭檔案。
這樣, 就造成巨集重名了,一定有一個頭檔案因為 #ifndef失去了效果。別的檔案自然找不到這個標頭檔案中的宣告,就提示 was not decleared in this scope了