Скажем, у меня есть заголовочный файл C a.h
Любой заголовочный файл C++, скажем a.hpp, который #includes a.h, должен делать это во внешнем блоке "C". >
Итак, у меня есть несколько файлов заголовков, которые являются общими для нашего кода C++ и кода C, и я хочу, чтобы весь код C++ #include версия-оболочка плюс вспомогательные функции.
Например, если у меня есть "a.h", у меня также есть "a.hpp", который #include a.h во внешний блок "C" и добавляет соответствующий вспомогательный код C++.
Поэтому я хочу, чтобы весь код C++ #include "a.hpp" НЕ "a.h".
Конечно, люди есть люди, иногда мы забываем.
Обычным сигналом о том, что что-то подобное произошло, является время компоновки, поскольку объявления имен функций искажены и, следовательно, ссылка не работает.
Поэтому мне нужно что-то, что я могу вставить a.h завершится ошибкой во время компиляции, если a.h компилируется компилятором C++, но НЕ во внешнем блоке "C".
Первая часть этого проста...< /p>
Просто используйте "#ifdef __cplusplus"
Как мне выполнить вторую часть, а именно определить во время компиляции, нахожусь ли я в extern "C" "заблокировать?
Подробнее здесь: https://stackoverflow.com/questions/784 ... rn-c-block