_THROW не определен в GCC?

#c #exception #gcc

#c #исключение #gcc

Вопрос:

Пожалуйста, скажите мне, где макрос _THROW определен в GCC4 или как определить его вручную

 #include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <assert.h>
#include <ctype.h>
#include <climits>
#include <stdexcept>
#include <sys/cdefs.h>
#include <sys/types.h>

void test() { _THROW(std::range_error,"Test"); }
  

Комментарии:

1. _THROW не является частью стандартного C . Почему бы вам не написать throw std::range_error("Test"); ?

Ответ №1:

Если вы хотите создать исключение в C , используйте стандартное ключевое слово C throw :

  throw std::range_error("Test"); 
  

Пожалуйста, воздержитесь от использования некоторых специфичных для компилятора внутренних макросов.


Если вы должны определить это, вот и все:

 #define _THROW(e, ...) throw e(__VA_ARGS__)