【问题标题】:C/C++ SEH Example build failureC/C++ SEH 示例构建失败
【发布时间】:2011-08-09 04:07:17
【问题描述】:

我完全不熟悉 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

知道这段代码有什么问题吗?

【问题讨论】:

  • 不,编辑没有帮助。 try/catch 没有捕捉到与 __try/__except 相同的异常。而且语法不同。
  • 谢谢,我试试Visual C++编译器

标签: c++ c visual-c++ seh


【解决方案1】:

正如@Ajay 所指出的,SEH 是 Microsoft C/C++ 编译器的一个特性。因此,将它与 GCC 一起使用几乎没有运气(除非您使用一些插件支持 - 请参阅我在他对 libSEH 的回答中的评论 - 请注意,我没有亲自使用它)。

如果不需要使用 GCC 或 Dev C++,您可以尝试使用免费的Microsoft Visual C++ Express 版本。

【讨论】:

    【解决方案2】:

    __try__except 是用于 SEH(结构化异常处理)的 Microsoft C/C++ 特定关键字。您应该使用trycatch C++ 异常处理。

    【讨论】:

    • +1:只需添加两件事。 SEH 也适用于 C,不需要 C++。其次,似乎有库(从未使用过)来模拟 GCC 的 SEH:libSEH.
    • 但是strcpy中没有涉及到C++异常。
    • 谢谢,我试试Visual C++编译器
    • 是的,SEH 也适用于 C,不需要 C++。我编辑了帖子。不知道 GCC 库,但是是的,因为它围绕 SEH(RaiseException 等)运行,所以在 GCC 中也必须有一些实现。 @BoPersson:SEH 也适用于 C。
    【解决方案3】:

    您需要包含seh.h 才能定义这些内容。

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 2022-06-18
      相关资源
      最近更新 更多