程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++的頭文件中類聲明後忘記加分號產生不可預期的編譯錯誤

C++的頭文件中類聲明後忘記加分號產生不可預期的編譯錯誤

編輯:關於C++

頭文件 Test.h 的內容是

class Test
{
public:
virtual void test1(); 
}

實現文件是

Test.cpp
#include "Test.h"
#include <iostream>
using namespace std;
void Test::test1(){ cout<<"Hello"<<endl; }

編譯時出現錯誤

c:\program files\microsoft visual studio\vc98 \include\errno.h(29) : error C2143: syntax error : missing ';' before 'string'
c:\program files\microsoft visual studio\vc98\include\errno.h(29) : fatal error C1004: unexpected end of file found

不把這兩個文件連接起來考慮是很難知道是那裡錯了,況且Unmi原來又是寫 java比C++多得多,java可沒有#include的用法,其實有C++經驗的人,明白了 #include只是把被包含文件的內容引入到當前位置。

上面把Test.h的內容插入到Test.cpp文件中#include "Test.h"處 ,那就要注意了,類聲明後必須要加上一個分號,可以把類聲明當成是普通的變 量聲明語句一樣,需要一分號結束,不然會出現許多不可預知的編譯錯誤

錯誤類型並非就是只出現上面那樣,主要看頭文件內容引入到當前位置後, 與隨後語句差一個分號會出現什麼語法錯誤,所以應該養成類聲明後加分好的習 慣就不會錯的。

比如實現文件寫成

#include "Test.h"
void Test::test1(){}

出現的錯誤就是

#include "Test.h"
void Test::test1(){}
C:\Documents and Settings\yanbin\My Documents\Visual Studio 

Projects\TestVirtual\Test.cpp(3) : error C2628: 'Test' followed by 

'void' is illegal (did you forget a ';'?)
C:\Documents and Settings\yanbin\My Documents\Visual Studio 

Projects\TestVirtual\Test.cpp(3) : error C2556: 'class Test __thiscall 

Test::test1(void)' : overloaded function differs only by return type 

from 'void __thiscall Test::test1(void)'
c:\documents and settings\yanbin\my documents\visual studio 

projects\testvirtual\test.h(4) : see declaration of 'test1'
C:\Documents and Settings\yanbin\My Documents\Visual Studio 

Projects\TestVirtual\Test.cpp(3) : error C2371: 'test1' : 

redefinition; different basic types
c:\documents and settings\yanbin\my documents\visual studio 

projects\testvirtual\test.h(4) : see declaration of 'test1'

因為編譯器看到了頭文件的類聲明與語句 void Test::test1(){} 之間沒 有分號。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved