Многочисленные KVM Whonix-Workstations

В конце концов, это стандарт - он не должен переходить от одной версии GCC к другой.

Нет, это не стандарт. Стандарт заключается в том, что вы можете написать

#include 

в единице перевода, и это повлияет на определенные вещи. Нет никакой гарантии из языковых стандартов , что заголовки являются файлами, не говоря уже о том, что они являются файлами в определенном каталоге в файловой системе на вашем компьютере с фиксированным содержимым.

Вся суть таких стандартных заголовков состоит в том, что они делают все, что подходит компилятору C / C ++, чтобы обеспечить то, что, согласно языковым стандартам, они должны обеспечивать после их включения. Они предоставляют необходимые объявления и макросы (обычно) с использованием внутренних ключевых слов, прагм, макросов и встроенных функций, предоставляемых компилятором. Конечно, это варьируется от компилятора к компилятору.

Это вторая ошибка, которую вы здесь делаете. Было бы близорукой ошибкой думать, что GCC - единственный компилятор C / C ++.Люди со старым опытом программирования DOS или Win32, где могло быть много компиляторов, будут очень знакомы с идеей, что стандартные заголовки очень сильно привязаны к компилятору . Нельзя просто взять стандартные заголовки (скажем) из Watcom C / C ++ и использовать их с компиляторами Borland, Microsoft, IBM или любыми другими компиляторами C / C ++.

Это мышление, которое следует принять, потому что это верно и для вас . Хотя то, что необходимо сделать в стандартном заголовке для достижения его цели, потенциально может варьироваться от одной версии GCC к другой, они также могут варьироваться между (скажем) clang и GCC. Операционные системы Unix и Linux не монокультуры с одним компилятором.

И действительно, вы найдете float.h , limits.h , stdint.h , stddef.h , stdarg.h и несколько других таких стандартных заголовков находятся в этих специфичных для компилятора местах. limits.h - это особенно запутанное дело, потому что оно охватывает как знания, специфичные для компилятора, так и специфичные для целевой платформы.

Дополнительная литература

0
27.07.2018, 20:43
1 ответ

Да вы прекрасно понимаете, как это работает. Я рад, что моя документация доносит суть. ^HU (Сопровождающий KVM)

0
28.01.2020, 04:16

Теги

Похожие вопросы