2013-05-03 18 views
4

編輯:解決問題的方法如下:http://www.jusuchyne.com/codingchyne/2011/03/codeblocks-failed-to-find-the-header-file/編譯與單獨的源和頭一類

它不會編譯,我有以下錯誤:

  • foo.h中沒有這樣的在目錄中的文件;
  • foo尚未申報;
  • NUM不是在這個範圍內聲明
  • foo是不是類或命名空間

奇怪的是,至少可以說,因爲我只是使用的代碼塊「創建一個新的類」和然後將其添加到此項目。這是源代碼:

頁眉:

#ifndef FOO_H 
#define FOO_H 
class foo 
{ 
    private: 
    int num; 
    public: 
     foo(); 
    void set_num(int set); 
    int get_num(); 
}; 
#endif // FOO_H 

的CPP

#include "foo.h" 

foo::foo() 
{ 
    num = 10; 
} 

void foo :: set_num(int set) 
{ 
    num = set; 
} 

int foo :: get_num() 
{ 
    return num; 
} 

不顧CALSS本身和它做什麼,問題是,即使我用它不編譯默認的代碼塊類創建設置。

的錯誤:

C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp|1|error: foo.h: No such file or directory| 
C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp|3|error: 'foo' has not been declared| 
C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp|3|error: ISO C++ forbids declaration of 'foo' with no type| 
C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp||In function 'int foo()':| 
C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp|5|error: 'num' was not declared in this scope| 
C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp|6|warning: no return statement in function returning non-void| 
C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp|8|error: 'foo' is not a class or namespace| 
C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp||In function 'void set_num(int)':| 
C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp|10|error: 'num' was not declared in this scope| 
C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp|13|error: 'foo' is not a class or namespace| 
C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp||In function 'int get_num()':| 
C:\Users\SameTime\Desktop\CodeBLocks\ASDD\src\foo.cpp|15|error: 'num' was not declared in this scope| 
||=== Build finished: 8 errors, 1 warnings ===| 
+0

頭文件叫做'foo.h'並且在同一個目錄下嗎? – 2013-05-03 16:13:23

+0

是的。 IDE處理該部分。 – Bloodcount 2013-05-03 16:14:26

+0

請發佈您遇到的錯誤。 – 2013-05-03 16:14:27

回答

2

如果標題是不是在同一個目錄中,您必須指定在包含命令中的路徑,或者你必須添加-I路徑指令生成文件或包含的設置。

也許這個鏈接也有幫助,因爲codeblock似乎有問題。

http://www.jusuchyne.com/codingchyne/2011/03/codeblocks-failed-to-find-the-header-file/

+0

就是這樣,它在同一個目錄中。 – Bloodcount 2013-05-03 16:17:23

+0

這是解決方案,謝謝你的鏈接,我將它添加到主線程中。 – Bloodcount 2013-05-03 16:40:30

+0

儘管如此,仍然覺得很奇怪。 :)可能是codeblock不是從源代碼目錄中調用編譯器,這是我目前可以想到的唯一解釋。 – Devolus 2013-05-03 16:42:57

2

這應該是一個評論,但我沒有50代表尚未...

你可以瀏覽到命令行的源目錄,並嘗試手工編譯,以確保該錯誤是不是與IDE?

如果您的IDE使用G ++(大概是),那麼該命令將g++ foo.cpp

+0

我並沒有真正使用命令行。雖然我改變了IDE並且類開始工作......這個問題變得越來越有趣,這個問題不應該在IDE中,因爲CodeBlocks被廣泛使用。 – Bloodcount 2013-05-03 16:30:30

+1

這就是爲什麼我不喜歡使用C++語言的IDE的原因之一,我覺得它們增加了不必要的複雜性。我會建議學習一些關於命令行(它不需要太多能夠導航到目錄並編譯)和makefile(這將允許您使用非常短的命令來編譯大型項目)。 – 2013-05-03 16:35:24

1
  1. 打開Windows資源管理器
  2. 導航到包含文件夾中的文件
  3. 確保頭被稱爲「 foo.h「(你知道資源管理器有時會隱藏文件擴展名,對不對?)

如果那樣做不行,你的編譯器壞了。