Я никогда не понимал необходимости #pragma once
, когда #ifndef #define #endif
всегда работает.
Я видел использование #pragma comment
для связи с другими файлами, но настройка параметров компилятора была проще с помощью IDE.
Каковы некоторые другие применения #pragma
, которые полезны, но не широко известны?
Edit:
Я не только после списка директив #pragma. Возможно, я должен перефразировать этот вопрос немного больше:
Какой код вы написали с помощью #pragma
, который вы нашли полезным?
.
Ответные вопросы:
Спасибо всем, кто ответил и/или прокомментировал. Здесь резюме некоторых материалов, которые я нашел полезными:
- Джейсон предположил, что использование
#pragma once
или#ifndef #define #endif
позволит ускорить компиляцию в крупномасштабной системе. Стив вскочил и поддержал это. - 280Z28 вышел вперед и отметил, что
#pragma once
является предпочтительным для MSVC, тогда как компилятор GCC оптимизирован для#ifndef #define #endif
. Поэтому следует использовать оба, а не оба. - Джейсон также упомянул о
#pragma pack
для двоичной совместимости, а Клиффорд против этого, из-за возможных проблем переносимости и суждения. Эван представил пример кода, и Деннис сообщил, что большинство компиляторов будут применять дополнение для выравнивания. - sblom предложил использовать
#pragma warning
для изоляции настоящих проблем и отключить предупреждения, которые уже были просмотрены. - Эван предложил использовать
#pragma comment(lib, header)
для упрощения переноса проектов без повторной настройки IDE. Конечно, это не слишком портативно. - sbi предоставил отличный трюк
#pragma message
для пользователей VC для вывода сообщений с информацией о номере линии. Джеймс сделал еще один шаг и позволяетerror
илиwarning
соответствовать сообщениям MSVC и будет отображаться соответствующим образом, например, в списке ошибок. - Chris предоставил
#pragma region
, чтобы иметь возможность свернуть код с настраиваемым сообщением в MSVC.
Будь, подождите, что если я хочу опубликовать сообщение об использовании #pragmas, если это необходимо?
- Клиффорд отправил с другой точки зрения о том, чтобы не использовать
#pragma
. Престижность.
Я добавлю больше к этому списку, если SOers почувствуют желание отправить ответ. Спасибо всем!