в чем разница между cpp и hpp файлами?
если я два раза сделаю include из разных мест не будет ли код скомпилирован дважды?
как мне внутри файла сделать подключить другой файл, но чтоб для тех файлов которые подключат этот файл тот файл не был доступен?
как мне сделать так чтобы из файла были доступны только определенные классы и только определенные методы?
C/C++
Глупые вопросы по поводу c++
Пошли по порядку:
>в чем разница между cpp и hpp файлами?
HPP - это файл-заголовок, в котором пишутся объявления всевозможных типов данных, которые используются потом в CPP файле. Для этого используется директива #include. Фактически, файл вставляется в то место, где написан #include <имя_файла>
>если я два раза сделаю include из разных мест не будет ли код скомпилирован дважды?
Да, так и произойдёт.
>как мне внутри файла сделать подключить другой файл, но чтоб для тех файлов которые подключат этот файл тот файл не был доступен?
Вопрос не понятен. Если файл с помощью #include подцеплен, то его содержимое тупо вставляется ровно в то место. Существуют определения условной компиляции, #ifdef, #ifndef - прочитайте про них. С их помощью можно куски кода делать невидимыми для компилятора
>как мне сделать так чтобы из файла были доступны только определенные классы и только определенные методы?
С помощью #ifdef. Например:
#define AAA //если этот дефайн убрать, то кусок кода внутри #ifdef - #endif будет невидим для компилятора. Переменные, определённые с помощью #define будут видны после определения ниже по коду. Если надо, чтобы они были видны во всём проекте, то их надо определять в make (или cmake) файле.
...
#ifdef AAA
///кусок кода
#endif
>в чем разница между cpp и hpp файлами?
HPP - это файл-заголовок, в котором пишутся объявления всевозможных типов данных, которые используются потом в CPP файле. Для этого используется директива #include. Фактически, файл вставляется в то место, где написан #include <имя_файла>
>если я два раза сделаю include из разных мест не будет ли код скомпилирован дважды?
Да, так и произойдёт.
>как мне внутри файла сделать подключить другой файл, но чтоб для тех файлов которые подключат этот файл тот файл не был доступен?
Вопрос не понятен. Если файл с помощью #include подцеплен, то его содержимое тупо вставляется ровно в то место. Существуют определения условной компиляции, #ifdef, #ifndef - прочитайте про них. С их помощью можно куски кода делать невидимыми для компилятора
>как мне сделать так чтобы из файла были доступны только определенные классы и только определенные методы?
С помощью #ifdef. Например:
#define AAA //если этот дефайн убрать, то кусок кода внутри #ifdef - #endif будет невидим для компилятора. Переменные, определённые с помощью #define будут видны после определения ниже по коду. Если надо, чтобы они были видны во всём проекте, то их надо определять в make (или cmake) файле.
...
#ifdef AAA
///кусок кода
#endif
Разница сугубо символическая и удобоваримая, договорено что в cpp пишется основная часть программы, в h(hpp) - заголовочная часть. Что-то вроде оглавления в книге. Если название совпадает, то компилятор ищет заголовки в h а их реализацию в соответствующем ему cpp файле. Можно в одном файле hpp писать и заголовки и их определения.
К примеру заказчик присылает заголовочный файл с описанием что ему нужно, а вы пишете реализацию в cpp файле. Если вам не нужна какая либо функция, достаточно закомментировать ее название в hpp, вместо того чтобы убирать много кода.
Когда все поставлено на поток - эту подтасовку что где убрать, а что оставить делают с помощью препроцессорной обработки #define #if #else и т.п.
К примеру заказчик присылает заголовочный файл с описанием что ему нужно, а вы пишете реализацию в cpp файле. Если вам не нужна какая либо функция, достаточно закомментировать ее название в hpp, вместо того чтобы убирать много кода.
Когда все поставлено на поток - эту подтасовку что где убрать, а что оставить делают с помощью препроцессорной обработки #define #if #else и т.п.
да. глупый. иди учи уроки. не твоё если читать документацию не умеешь
Похожие вопросы
- У меня вот такой вопрос, к опытным программистам. По поводу c++, и математики.
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- C и C++ вопросы
- C++ вопрос по задаче. Здача лёгкая
- Какие из этих книг вы посоветуете прочесть в первую очередь чтобы повысить свои знания в C/C++?
- Задача по C++
- Меня бесит вопрос по c++ и c#
- Программирование C++ ПРОШУ ПОМОЧЬ!
- Почему создатель Linux Линус Торвальдс называет C++ ужасным языком, а ядро ОС Linux пишется только на Си?
- Задача на C++ (Остатки).