我完全不熟悉c / c ++。我需要编译一个小程序来做一些分析。
这是程序
#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;
}
我正在编译Dev C ++ 4.9.9.2。这些是我得到的错误
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
知道这段代码有什么问题吗?
答案 0 :(得分:2)
正如@Ajay指出的那样,SEH是Microsoft C / C ++编译器的一个特性。因此在GCC中使用它几乎没有运气(除非你使用一些插件支持 - 请参阅我对libSEH的回答的评论 - 请注意,我没有亲自使用过它。)
如果没有要求使用GCC或Dev C ++,您可以尝试使用免费的Microsoft Visual C++ Express版本。
答案 1 :(得分:1)
__try
和__except
是针对SEH(结构化异常处理)的Microsoft C / C ++特定关键字。您应该使用try
和catch
C ++异常处理。
答案 2 :(得分:0)
您需要为要定义的内容添加seh.h
。