Имеет ли смысл использовать _attribute__ ((nothrow)) внутри extern C?

У меня есть некоторый C-код, вызываемый из C ++.
Заголовок напоминает следующее:

#ifndef CLibH
#define CLibH

#ifdef __cplusplus
extern "C" {
#endif

//C API
void foo(void);
// ...

#ifdef __cplusplus
}
#endif

#endif

Так как я уже использую extern C,
есть ли польза от добавления nothrow атрибут компилятора?

#ifndef CLibH
#define CLibH

#ifdef __cplusplus
extern "C" {
#endif

//C API
void foo(void) __attribute__((nothrow));
// ...

#ifdef __cplusplus
}
#endif

#endif

Есть ли extern C сделать это избыточным?
Есть ли еще преимущества применения в этих условиях?

4

Решение

Да, это так. Из документации gcc:

Например, большинство функций в стандартной библиотеке C может быть
гарантированно не выбрасывать исключение с заметными исключениями
qsort и bsearch, которые принимают аргументы указателя на функцию.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]