2012-04-11 95 views
2

正在轉換爲使用Oracle Pro * C的現有程序在預編譯時會導致問題。它從文件系統中讀取一個文件,解析它並寫入一對數據庫表。Oracle Pro * C預編譯器錯誤PCC-S-02201

有如下定義的方法:

void parse_line(inline) 
char *inline; 
{ 
// do stuff 
} 

當我嘗試做了,我看到:

Syntax error at line 162, column 13, file myfile.cp: 
Error at line 162, column 13 in file myfile.cp 
char *inline; 
............1 
PCC-S-02201, Encountered the symbol ";" when expecting one of the following: 

    (* const, volatile, an identifier, 

這個函數的聲明在語法上是正確的,因爲據我所知,所以我必須假設由於其他地方的問題,此預編譯器錯誤即將出現。

在這裏粘貼整個程序的缺點,有沒有人有任何建議,我可以開始尋找幾個好地方?

我pcscfg.cfg看起來像這樣:

sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/x86_64-redhat-linux/3.2.3/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include,/usr/lib64/gcc/x86_64-suse-linux/4.1.2/include,/usr/lib64/gcc/x86_64-suse-linux/4.3/include) 
ltype=short 
define=__x86_64__ 
+0

駱駝之子。這從來沒有發生過我。我有一半的時間想駕駛半個小時回去工作,看看是否能解決這個問題。我不會!但我很動心。 – 2012-04-11 21:09:30

回答

4

即聲明是無效的,因爲inline是在C和C關鍵字++(並且只能被用作C中的函數說明符)。

將該變量的名稱更改爲其他內容,如果編譯爲C而不是C++,則應通過。我不相信函數定義語法的風格在C++中是可以接受的。

+0

最奇怪的是,這確實是編譯成Ingres嵌入式C程序。只是不作爲Pro * C程序。儘管如此 - 將「inline」更改爲「inp_line」,我們預編譯並編譯得很好。謝謝! – 2012-04-12 17:04:12

+0

好'inline'是很酷的新東西,只在C99中作爲關鍵字添加。 C89沒有它:) – Mat 2012-04-12 17:06:50

+0

是的 - 正如你可能猜到的,這個東西是_old_。 – 2012-04-12 17:12:36