Я не вижу комментариев в стандарте, кроме связанных с привязкой вещей.
Хотя стандарт ничего не говорит о вызове конвенции, соглашения о вызовах могут быть разными между C и С++ в реальном мире, поэтому я ожидал, что типы C-функции и С++-функции различны. Но, похоже, это не так, особенно в GCC.
#include <type_traits>
extern "C" {
int c_func(int);
}
int cpp_func(int);
static_assert(!std::is_same<decltype(c_func), decltype(cpp_func)>::value,
"It should not be the same type");
static_assert
терпит неудачу, поскольку GCC считает, что эти функции имеют один и тот же тип.
- Является ли
extern "C"
частью типа функции? - Как проверить, использует ли функция C-соглашение или соглашение на С++?