2012-08-29 188 views
0

很久以前,我正在玩C代碼的POS設備。我可以在Visual Studio 2008中開發和構建。然後測試我可以進入cygwin,編寫代碼並加載到設備上,或者使用包含的模擬器。虛擬盒子丟失的地方。在Visual C++ Express中編譯C代碼

我想重新啓動這個設備,但是在試圖讓代碼在Visual Studio 2008 C++ Express中生成的時候有一段很長的時間。

我從現有代碼創建了一個新項目,將其設置爲編譯爲C代碼並嘗試構建。它抱怨說找不到system.h,所以我在工具下的include目錄中添加了這個目錄。

現在它給出了408個錯誤。示例如下所示:

------ Build started: Project: TestHelloWorld, Configuration: Debug Win32 ------ 
Compiling... 
sysutil.c 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(105) : error C2054: expected '(' to follow '__pcs' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(105) : error C2085: 'disable_interrupt' : not in formal parameter list 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(106) : error C2082: redefinition of formal parameter '__pcs' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(106) : error C2143: syntax error : missing ';' before 'type' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(106) : error C2085: 'enable_interrupt' : not in formal parameter list 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(107) : error C2085: 'call_app_func' : not in formal parameter list 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(108) : error C2082: redefinition of formal parameter '__pcs' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(108) : error C2146: syntax error : missing ',' before identifier 'DWORD' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(108) : error C2146: syntax error : missing ',' before identifier 'os_switch_app' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(108) : error C2143: syntax error : missing ';' before '(' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(108) : error C2059: syntax error : ')' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(109) : error C2054: expected '(' to follow '__pcs' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(109) : error C2085: 'app5_call' : not in formal parameter list 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(110) : error C2082: redefinition of formal parameter '__pcs' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(110) : error C2146: syntax error : missing ',' before identifier 'DWORD' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(110) : error C2146: syntax error : missing ',' before identifier 'app6_call' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(110) : error C2143: syntax error : missing ';' before '(' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(110) : error C2059: syntax error : ')' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(111) : error C2054: expected '(' to follow '__pcs' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(111) : error C2085: 'app7_call' : not in formal parameter list 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(112) : error C2082: redefinition of formal parameter '__pcs' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(112) : error C2146: syntax error : missing ',' before identifier 'DWORD' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(112) : error C2146: syntax error : missing ',' before identifier 'app8_call' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(112) : error C2143: syntax error : missing ';' before '(' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(112) : error C2059: syntax error : ')' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(113) : error C2054: expected '(' to follow '__pcs' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(113) : error C2085: 'app9_call' : not in formal parameter list 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(114) : error C2082: redefinition of formal parameter '__pcs' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(114) : error C2146: syntax error : missing ',' before identifier 'DWORD' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(114) : error C2146: syntax error : missing ',' before identifier 'app10_call' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(114) : error C2143: syntax error : missing ';' before '(' 
c:\cygwin\home\creon_sdk_v2.3\program\lib\system.h(114) : error C2059: syntax error : ')' 

有沒有人有任何想法我可以得到這個工作。

該代碼來自設備SDK附帶的示例代碼。

此外SDK附帶安裝了cygwin,我可以使示例程序沒有問題,但是我更像是一個C#開發人員,並且和我的IDE一樣。我之前有這個工作,但不記得之前我是如何工作的。

請,任何意見,將不勝感激。

親切的問候,

奧尼爾

編輯 - 作爲請求行101 - 115 system.h中

#ifndef _SYSTEM_H_ 
#define _SYSTEM_H_ 
#include "common.h" 

extern __pcs void disable_interrupt(); 
extern __pcs void enable_interrupt(); 
extern DWORD call_app_func(void * ptr,DWORD param1,DWORD param2,DWORD param3); 
extern __pcs DWORD os_switch_app(BYTE app_id,DWORD param1,DWORD param2,DWORD param3); 
extern __pcs DWORD app5_call(DWORD func_no,DWORD param1,DWORD param2, DWORD param3); 
extern __pcs DWORD app6_call(DWORD func_no,DWORD param1,DWORD param2, DWORD param3); 
extern __pcs DWORD app7_call(DWORD func_no,DWORD param1,DWORD param2, DWORD param3); 
extern __pcs DWORD app8_call(DWORD func_no,DWORD param1,DWORD param2, DWORD param3); 
extern __pcs DWORD app9_call(DWORD func_no,DWORD param1,DWORD param2, DWORD param3); 
extern __pcs DWORD app10_call(DWORD func_no,DWORD param1,DWORD param2, DWORD param3); 

謝謝!

+1

請問你可以編輯你的問題,把這個'system.h'頭文件中的100-115行放入問題中?很難說沒有看到一些代碼可能會出錯。 –

+1

您是否缺少一些預處理器定義?它看起來像__pcs沒有定義。既然你有一個新的開始,也許你可以檢查你的舊項目文件,看看你是否錯過了一些東西。 – Rango

+0

我很遺憾沒有舊的項目,因爲它是在一個虛擬機器上,在某種程度上一路迷路。我將如何去了解預處理器定義的是否是問題? – Neill

回答

1

error C2054: expected '(' to follow '__pcs'形式的此特定編譯器錯誤消息指示編譯正在嘗試解碼源代碼行,就像__pcs是函數名稱的開頭一樣,並且期望括號遵循標識符,因爲它期望功能參數列表。

每當我看到這是因爲有一個定義缺失,它將定義__pcs某些函數行爲修飾符。例如,在Windows中,您可能會指定調用序列(C標準與Pascal)或另一個將用於DLL鏈接。

我建議你通過頭文件進行搜索,尋找__pcs的定義來查看它可能定義的位置。

它確實看起來像是有一種-D編譯器指令來定義__pcs或需要被包含來定義__pcs的頭文件。

這是一個可用於Cygwin應用程序的sample header file include dependency graph

+0

我似乎有它的工作,只有時間會告訴。原來,它看起來像我包括錯誤的目錄。添加了正確的目錄以包含並且必須添加一些.lib文件,現在看起來不錯。謝謝大家 – Neill