2011-08-09 97 views
0

我完全不熟悉C/C++。我需要編寫一個小程序來做一些分析。C/C++ SEH實施例建立失敗

這是我在開發的C++編譯4.9.9.2程序

#include<stdio.h> 
#include<string.h> 
#include<windows.h> 
//#include<seh.h> 
#include<excpt.h> 

int ExceptionHandler(void); 
int main(int argc,char *argv[]) 
{ 

char temp[512]; 

printf("Application launched"); 

try 
    { 

    strcpy(temp,argv[1]); 

    } catch (ExceptionHandler()) 
    { 
    } 
return 0; 
} 
int ExceptionHandler(void) 
{ 
printf("Exception"); 
return 0; 
} 

。這些是我得到的錯誤

Compiler: Default compiler 
Building Makefile: "C:\Documents and Settings\madhur\Desktop\Makefile.win" 
Executing make... 
make.exe -f "C:\Documents and Settings\madhur\Desktop\Makefile.win" all 
g++.exe -c main.c -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" 
main.c: In function `int main(int, char**)': 
main.c:20: error: `ExceptionHandler' is not a type 
m ain.c:20: error: invalid catch parameter 
make.exe: *** [main.o] Error 1 
Execution terminated 

任何想法這段代碼有什麼問題?

+2

不,編輯是沒有幫助。 'try/catch'不會捕獲'__try/__ except'類型的異常。語法不同。 –

+0

謝謝,我會嘗試Visual C++編譯器 –

回答

2

正如@Ajay指出SEH是Microsoft C/C++編譯器的特徵。所以在使用GCC的時候一點運氣都沒有(除非你使用一些插件支持 - 請在我的評論中關於libSEH - 請注意,我沒有親自使用它)。

如果沒有規定使用GCC或開發的C++,你可以嘗試使用免費Microsoft Visual C++ Express版來代替。

0

您需要包括seh.h對於要定義的那些東西。

1

__try__except是SEH(結構化異常處理)的Microsoft C/C++特定關鍵字。您應該使用trycatch C++異常處理。

+0

+1:只需添加兩件事。 SEH也適用於C,不需要C++。其次,似乎有一個庫(從未用過)來模擬GCC的SEH:[libSEH](http://www.programmingunlimited.net/siteexec/content.cgi?page=libseh)。 –

+0

但是在strcpy中沒有涉及C++異常。 –

+0

謝謝,我會努力的Visual C++編譯器 –