Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Пару вопросов по define |
Автор: Robix 16.7.2015, 10:34 |
1-й вопрос При сборке проекта в Visual Studio получаю предупреждение. D:\Program\MicrosoftVisualStudio\VC\include\stdint.h(65): warning C4005: 'UINT8_MAX' : macro redefinition d:\proj\order\..\..\inc\tech.h(112) : see previous definition of 'UINT8_MAX' Впринципе понятно в чем дело, у меня в файле tech.h #define UINT8_MAX 255 а в stdint.h тоже самое определение, но с другим значением Менять tech.h не могу, так как это бибилиотека нужна для проекта. А вот стандартный stdint.h мне не нужен. Но его исключить не получается, так как он видимо через другие стандартные c++ библиотеки, которые я включаю находится. От этого предупреждения можно избавиться? 2-й вопрос Еще вопрос: В заголовочном файле часто пишут. Я не до конца понял. #ifndef TECH_H #define TECH_H #endif Можете объяснить что дает #define TECH_H ? А если я напишу его без #ifndef TECH_H и #endif смысл поменяется? |
Автор: Guinness 16.7.2015, 11:00 |
Сделайте https://msdn.microsoft.com/ru-ru/library/ts4w8783.aspx перед своим определением. Делают это для того, чтобы заголовочный файл не был многократно включён в исходные файлы. Собственно, достаточно убрать эту конструкцию, и, скорее всего, ничего не будет собираться. Насколько я помню, это делалось, когда компиляторы ещё не поддерживали директиву https://msdn.microsoft.com/en-us/library/4141z1cx.aspx. |
Автор: Robix 16.7.2015, 20:17 |
Спасибо. Получилось с undef. Насчет #define в заголовочных файлах тоже кажется понятно ![]() |