Size: a a a

IT KPI C/C++ ХВ (не UB)

2020 September 14

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Но типа.. нафига?
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Это по сути ифндеф
источник

A

András in IT KPI C/C++ ХВ (не UB)
 ‌  
Нормально написанные?
ну, я можу написати свої хедери так, що вони будуть компілюватися тільки, якщо всі 10 моїх хедерів підключені в даному порядку, і тільки якщо будуть підключені всі вони, але сорян, це все тоді виглядає як лайно
источник

TL

Tony Lutsenko in IT KPI C/C++ ХВ (не UB)
Alexander Pavlyuchuk
Но типа.. нафига?
Чтобы наверняка
источник

 ‌  ... in IT KPI C/C++ ХВ (не UB)
Ну и есть ли разница между
#pragma once
&
#ifndef FILENAME_H
#define FINENAME_H

#endif
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Если ты инклудишь спп, то ок)) есть смысл
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
 ‌  
Ну и есть ли разница между
#pragma once
&
#ifndef FILENAME_H
#define FINENAME_H

#endif
Нет разницы. Но прагма не стандарт
источник

TL

Tony Lutsenko in IT KPI C/C++ ХВ (не UB)
Alexander Pavlyuchuk
Нет разницы. Но прагма не стандарт
Разве?
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Хоть её и поддерживают все компиляторы шо я знаю
источник

KS

Kyryl Sydorov in IT KPI C/C++ ХВ (не UB)
 ‌  
Ну и есть ли разница между
#pragma once
&
#ifndef FILENAME_H
#define FINENAME_H

#endif
нема
источник

A

András in IT KPI C/C++ ХВ (не UB)
Alexander Pavlyuchuk
Нет разницы. Но прагма не стандарт
десь же бачив, що pragma це просто обгортка над іфндеф, яка може згенерувати не унікальне ім'я
источник

KS

Kyryl Sydorov in IT KPI C/C++ ХВ (не UB)
Alexander Pavlyuchuk
Нет разницы. Но прагма не стандарт
прагма - стандарт з С++11
источник

KS

Kyryl Sydorov in IT KPI C/C++ ХВ (не UB)
до того крім іфндеф нічого не було
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
Kyryl Sydorov
прагма - стандарт з С++11
cppref с тобой не согласен
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
Вернее не так
источник

TL

Tony Lutsenko in IT KPI C/C++ ХВ (не UB)
Вики пишет, что есть
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
прагма стандарт, возможно, но #pragma once не стандарт
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
источник

TL

Tony Lutsenko in IT KPI C/C++ ХВ (не UB)
Применение #pragma once вместо include guard увеличит скорость компиляции во многих случаях благодаря высокоуровневому механизму; компилятор может самостоятельно сравнивать имена файлов или inode'ы без необходимости вызова препроцессора Си для проверки заголовка на наличие #ifndef и #endif.

С другой стороны, некоторые компиляторы, как например, GCC, также используют специальный код для распознавания и оптимизации обработки include guard.

Из-за того, что компилятор сам по себе отвечает за обработку #pragma once, программисту нет необходимости создавать новые имена, например, GRANDFATHER_H. Это исключает риск коллизии имён, то есть заголовочный файл не сможет вызвать ошибку при его подключении. Также приходится меньше набирать текста, нежели при использовании include guard.
источник

KS

Kyryl Sydorov in IT KPI C/C++ ХВ (не UB)
Julian =) Coffee
прагма стандарт, возможно, но #pragma once не стандарт
уточнення. Дійсно, це не стандарт, я перепрошую. Але з С++11 у всіх основних компіляторах підтримується
источник