2013-10-28 53 views
0

我試圖通過Makefile編譯C++代碼時遇到此錯誤。錯誤:':'令牌之前的預期初始值設定項,gcc編譯器

error: expected initializer before ':' token 

我檢查我的系統的編譯器的兼容性 我還檢查路徑等等。我也做了一些試驗。例如在第二個類的聲明後添加一個分號,但沒有奏效。我幾乎沒有使用C++的經驗,腳本甚至不是由我寫的;它是vtk庫(可視化工具包)的一部分。從那裏 錯誤生成腳本的一部分是:

#ifndef __vtkProcessObject_h 
#define __vtkProcessObject_h 

#include "vtkAlgorithm.h" 

class vtkDataObject; 

class VTK_FILTERING_EXPORT vtkProcessObject : public vtkAlgorithm 
{ 
public: 
    vtkTypeRevisionMacro(vtkProcessObject,vtkAlgorithm); 
    void PrintSelf(ostream& os, vtkIndent indent); 

我得到line 8錯誤。

也許這是非常簡單的事情,但正如我所說我不知道​​這種語言是如何工作的。

+0

'vtkAlgorithm.h'的內容是什麼?看到'VTK_FILTERING_EXPORT'的定義以及'class vtkAlgorithm'的聲明會很有趣。 – simonc

+10

看起來像VTK_FILTERING_EXPORT不是#define'd,編譯器把它當作變量名。嘗試預處理源文件。 – harper

+0

我建議您使用CMake來生成您的vtk makefile。這將處理定義,包括鏈接... – drescherjm

回答

0

VTK_FILTERING_EXPORT宏定義在標題中,主要用於Windows和/或GCC符號可見性。你沒有提到你正在編譯的VTK版本,但是使用CMake來生成Makefile會確保正確的包含路徑被設置。如果這是Linux,並且GCC可見性功能尚未激活,則可以將該宏定義爲無,但是我懷疑在編譯過程中遇到了許多其他問題。

相關問題