2011-08-09 63 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++编译器 –