Я считал, что файлы заголовков C должны быть включены в верхний уровень программы на С++. Во всяком случае, я случайно обнаружил, что С++ разрешает включение заголовков C в подпространство имен.
namespace AAA {
extern "C" {
#include "sqlite3.h" // C API.
}
}
И тогда все типы и функции C будут помещены в пространство имен. Более интересно, что все связанные функции C также работают! Я также обнаружил, что это может вызвать некоторые проблемы с препроцессором, но, кроме того, кажется, что это работает очень хорошо.
Это стандартное поведение? (Я использую Clang 3.x) Если это так, то каково название этой функции и где я могу найти эту функцию, упомянутую в стандарте?