Я ранее написал код C++, который #include
s заголовки Unix и Linux API, и эти программы вызывают ожидаемое поведение. Тем не менее, я не знаю, на что можно положиться. Вполне возможно, что несовместимость между C и C++ может привести к тому, что допустимые заголовки C будут действовать неожиданными способами при использовании программами на C++.Являются ли заголовки API Unix и Linux совместимыми с C++?
Могут ли заголовки Unix и Linux API надежно использоваться кодом, который будет скомпилирован как C++?
Является ли это целью авторов этих заголовков? Или эти заголовки предназначены только для того, чтобы быть действительными?
Есть ли какие-либо известные подводные камни при этом?
Очевидно, что дистрибутивы Unix и Linux многочисленны, и я не ожидаю ответа на каждый дистрибутив по одному. Мое ожидание состоит в том, что тот же ответ будет применяться практически ко всем дистрибутивам Unix и Linux, и исключения подтвердят это правило. Если это предположение неверно, объяснение этого также будет правильным ответом.
По заголовкам Unix Я имею в виду эти:
http://www.unix.org/version3/apis/headers.html
По заголовкам Linux я имею в виду заголовки, предоставляемые дистрибутивах Linux, как правило, в качестве пакета под названием «Linux-заголовки», которые позволяют программам взаимодействовать с ядром Linux , Например, это Debian пакет:
https://packages.debian.org/wheezy/kernel/linux-headers-3.2.0-4-amd64
Я понимаю, что ссылка Unix только спецификация и что каждый дистрибутив отличается, но снова я подозреваю, что это разумно, чтобы задать этот вопрос для большинства распределений. Если это не так, тогда исправьте меня.
Редактировать Я имею в виду только заголовки, используемые программами пользовательского пространства.
что вы подразумеваете под UNIX и заголовки Линукс – redFIVE
Ну, я оказался в ситуации, когда я должен был включать в себя C++ заголовки первого (например, ''), а затем включить специфичные для платформы заголовки (например, ''). Когда включения были почитаемы, компиляция потерпит неудачу. (Или, может быть, ситуация была наоборот). –
jww
@redFIVE отредактирован. Это то, что вы искали? Я думал, что «unix headers» было разумным описанием, чтобы я мог что-то не понимать. Было ли это «Unix и Linux» запутанным? – Praxeolitic