Заголовочные файлы в C / C ++, стандартные? - PullRequest
0 голосов
/ 05 мая 2011

Являются ли заголовочные файлы стандартными или другими в gcc по сравнению с другими компиляторами?

Ответы [ 5 ]

3 голосов
/ 05 мая 2011

Не совсем понятно, о чем вы спрашиваете, но «стандартные» заголовочные файлы являются стандартными только в том смысле, что они (должны) соответствовать стандарту C / C ++ (как определено руководящим органом, например, ANSI и т. Д.)

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

Другими словами, вы должны полагаться только на поведение, указанное в стандарте., поскольку конкретные реализации могут незначительно отличаться.

1 голос
/ 05 мая 2011

Стандартные заголовочные файлы называются так, потому что они определены как часть стандарта ANSI C / C ++, поэтому они будут одинаковыми для всех компиляторов, совместимых с ANSI.

0 голосов
/ 05 мая 2011

Вы можете найти небольшие различия между различными наборами компиляторов.Но что еще более важно, вы найдете множество библиотек и заголовочных файлов на разных платформах.Например, GCC часто встречается в системах POSIX, поэтому довольно часто можно найти, скажем, <pthread.h> всякий раз, когда __GNUC__ предопределено.Это приводит к предположительному коду:. (Но по-прежнему ожидайте несколько непонятных несоответствий, вызванных в основном разными версиями компилятора.)

Также проверьте, что ваш код создается и работает на разных системах.Если он работает с использованием Visual Studio под Windows и GCC под Linux, вы можете быть несколько уверены в том, что перенос вашего кода на другие системы будет простым.

0 голосов
/ 05 мая 2011

Концепция заголовочных файлов, помимо стандартных, необходимых для стандартной библиотеки, стандартом не определена. Но использование #include для указания файлов для импорта есть. Так что это стандартный, а также общий порядок поиска этих файлов компилятором. И метод #ifndef BLAH для избежания множественного включения также является обязательным согласно стандарту, поскольку поведение препроцессора четко определено (хотя, как я уже сказал, в стандарте ничего не говорится о том, используете ли вы их вообще или нет). #pragma once не является стандартным, поэтому используйте его на свой страх и риск.

0 голосов
/ 05 мая 2011

Я надеюсь, что понимаю ваш вопрос, но вот мой путь.

Заголовочные файлы (.h), которые идут вместе с .cpp файлом для создания класса, - это то, как вы делаете вещи в C ++.

В большинстве случаев SomeClass.h будет создавать прототип класса, а SomeClass.cpp будет содержать код, необходимый для работы класса.

Если по какой-то причине GCC делает что-то совсем другое для компиляции, тогда я понятия не имею. Я предполагаю, что это та же идея для любого компилятора.

...