2010-09-11 3 views
2

Я хотел бы иметь функцию, написанную на C, но вызываемую из C++, которая принимает ограниченный указатель. Это доступно только в c99, поэтому g ++ не нравится, даже в блоках extern "C". Как я могу обойти это ограничение?Использование c99 в `extern 'C++` C блоков `

+3

'extern" C "' не означает, что содержащийся код является C, это означает, что любые функции или элементы, объявленные там, будут использовать ссылку C. –

+0

Просто шутите: попробуйте 'extern 'C99" ' – pmg

+0

Аналогичная проблема здесь:' struct XY a = {.x = 1, .y = 2}; 'НЕ компилируется внутри внешнего блока" C ": _error: выражение до '.' token_, так расстраивает! Вместо этого устаревшая форма 'struct XY a = {x: 1, y: 2};' DOES work. Ой! – gatopeich

ответ

1
#ifdef __cplusplus 
# ifdef __GNUC__ 
#  define restrict __restrict__ // G++ has restrict 
# else 
#  define restrict // C++ in general doesn't 
# endif 
#endif 
Смежные вопросы