Я никогда не понимал необходимости #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 почувствуют желание отправить ответ. Спасибо всем!