1. 程式人生 > >g++編譯報錯原因分析“was not declared in this scope"

g++編譯報錯原因分析“was not declared in this scope"

在編譯程式的時候,提示:“was not declared 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了