0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 37
|
||||||
1 | ||||||
Заголовочные файлы09.01.2012, 05:29. Показов 2496. Ответов 11
Метки нет (Все метки)
Поправьте если не так, если _MYCLASS_H было определено как "class myclass{//Описание класса};", как в примере, то в тексте программы _MYCLASS_H заменяется на "class myclass{//Описание класса};" (без кавычек). И ещё, если _MYCLASS_H - макроимя, то не следует ли объявление класса заключить в круглые скобки? И почему обычный код нельзя размещать в заголовочных файлах, а коды подставляемых функций можно?
0
|
09.01.2012, 05:29 | |
Ответы с готовыми решениями:
11
Заголовочные файлы .h, файлы исходного когда c/c++ и установление связи между ними Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы? заголовочные файлы в с++ Заголовочные файлы - C++ |
Модератор
12831 / 7568 / 1764
Регистрация: 25.07.2009
Сообщений: 13,960
|
|||||||||||
09.01.2012, 05:40 | 2 | ||||||||||
Что есть "обычный код"?
hdrfunc.h
Код
~/cpp/other $ gcc -o hdrfunc hdrfunc.c ~/cpp/other $ ./hdrfunc Hello, world! Hello, world! Hello, world! ~/cpp/other $
1
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
09.01.2012, 05:44 | 3 | |||||
вы неверно поняли этот момент.
пишется обычно вот так
http://ru.wikipedia.org/wiki/Include_guard это защита от двойного определения класса. Необходима из-за "правила одного определения", оно же One Definition Rule (ODR) http://en.wikipedia.org/wiki/One_Definition_Rule
2
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
09.01.2012, 05:59 | 4 |
Я тут темку создал не давно на эту тему. Не всегда эта защита спасает.
Как влияет inline и обертка(#ifndef #define #endif) .h файла на компоновщик.
1
|
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 37
|
|
09.01.2012, 06:48 [ТС] | 5 |
Имелось ввиду НЕ коды подставляемых функций
Это вроде результатов?) Написал с отступом по аналогии с IF, да и нагляднее так. Но раз так принято, буду так писать... Кстати, спасибо за ссылки, даже не знал как такое искать Это значит, что мы инициализируем переменную (или макроимя?) значением 1? И почему вообще _HDRFUNC_H_? Что тогда в 1 примере означало это: #define _MYCLASS_H class myclass{//Описание класса};
0
|
09.01.2012, 12:28 | 6 |
Вот тут пример посмотри
Си, использование вложенных файлов *.c
1
|
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 37
|
|
09.01.2012, 16:55 [ТС] | 7 |
Что это за файлы с символами "~" и "$"? Какой-то лог?
Посмотрел. Остались вопросы 1) _HDRFUNC_H_ это макроопределение, которое мы сами можем задать (любым), правильно? 2) Для чего нужна единица в 3) Получается, что 4) А что если класс уже был определен в другом файле без _MYCLASS_H? Как текущий файл узнает, что нужно использовать _MYCLASS_H?
0
|
09.01.2012, 17:05 | 9 |
Tamoren, ты задаёшь много интересных вопросов, потому что учишься. Но не на все вопросы ты сможешь понять правильный ответ. Есть такая хорошая практика - сначала тупо научиться делать, как делают другие, а со временем уже начать разбираться, почему нужно делать именно так.
Но если тебе не впадлу читать много букв и твоя голова способна вместить много информации за раз, не перемешав всё в кашу, почитай статью: Препроцессорные директивы в C/C++ (#include, #define и прочее) Это лог запуска из линуксовой консоли
0
|
Модератор
12831 / 7568 / 1764
Регистрация: 25.07.2009
Сообщений: 13,960
|
|
09.01.2012, 17:17 | 10 |
Просто стиль такой, уберите единицу, будет работать с таким же успехом. Так идеологически правильнее.
А вот это, извините, ересь...
0
|
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 37
|
|
09.01.2012, 17:52 [ТС] | 11 |
Уйти от проблемы - не решить её. Уже прочитал немного про макрозащиту, где предлагалось альтернативой #pragma once. Но мы не ищем легких путей
не впадлу буду читать. спасибо) Ну с Вашей позици я бы назвал их тупыми Есть какое-то ощущение, что это основы основ Да-да, прочитал, понял Осталось только это (последнее, больше не буду xD): 1) Почему принято в заголовочных файлах размещать коды только подставляемых функций? 2) А что если класс уже был определен в другом файле без _MYCLASS_H? Как текущий файл узнает, что нужно использовать _MYCLASS_H?
0
|
09.01.2012, 21:52 | 12 |
Дело не в том, что вопросы тупые, а в том, что их много и ты всё пытаешься понять чисто в теории. Почему в первом классе не учат интегралы? Потому что для этого надо слишком много знать. Вот и ты для начала научись примитивным и простым вещам, а потом уже лезь в сложные. А то у тебя будут одни теоретические знания, которые ты даже на практике применить не сможешь. Твои два последние вопроса ровно об этом и говорят. Если ты прочёл статью про препроцессор, но сам не можешь ответить на свои вопросы, значит эти теоретические знания тебе никакую пользу не принесли, потому что обладая ими ты не можешь ответить на вопросы, которые напрямую из этого вытекают
1
|
09.01.2012, 21:52 | |
09.01.2012, 21:52 | |
Помогаю со студенческими работами здесь
12
заголовочные файлы g++ Заголовочные файлы заголовочные файлы Заголовочные файлы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |