0

私は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

このコードの何がそんなに悪いのか考えてみませんか?

4

3 に答える 3

2

@Ajayが指摘しているように、SEHはMicrosoft C /C++コンパイラの機能です。したがって、GCCでそれを使用することにはほとんど運がありません(アドオンサポートを使用しない限り-libSEHに関する彼の回答で私のコメントを参照してください-私が個人的に使用したことはありません)。

GCCまたはDevC++を使用する必要がない場合は、代わりに無料のMicrosoft Visual C++Expressエディションを使用してみてください。

于 2011-08-09T04:26:51.673 に答える
1

__tryおよび__exceptは、SEH(構造化例外処理)のMicrosoft C /C++固有のキーワードです。C++例外処理を使用する必要がtryあります。catch

于 2011-08-09T04:12:56.247 に答える
0

seh.hそれらを定義するために含める必要があります。

于 2011-08-09T04:10:36.217 に答える