C / C ++ SEH Пример сбоя сборки - PullRequest
0 голосов
/ 09 августа 2011

Я совершенно не знаком с 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

Есть идеи, что не так с этим кодом?

Ответы [ 3 ]

2 голосов
/ 09 августа 2011

Как отметил @Ajay, SEH - это особенность компилятора Microsoft C / C ++. Так что не очень удачно использовать его с GCC (если только вы не используете какую-либо поддержку аддонов - см. Мой комментарий в его ответе о libSEH - учтите, я лично не использовал его).

Если нет необходимости использовать GCC или Dev C ++, вы можете попробовать вместо этого использовать бесплатную версию Microsoft Visual C ++ Express .

1 голос
/ 09 августа 2011

__try и __except являются специальным ключевым словом Microsoft C / C ++ для SEH (Структурная обработка исключений). Вы должны использовать try и catch C ++ для обработки исключений.

0 голосов
/ 09 августа 2011

Вы должны включить seh.h для тех вещей, которые будут определены.

...