Яка різниця між pragma once і #ifndef C++?

Одного разу виявилося, що найбільшим недоліком #pragma є те, що він не є офіційним стандартом. Однак я читав, що він все ще широко підтримується в усіх сучасних IDE. З іншого боку, #ifndef офіційно підтримується, але вимагає трохи більше зусиль (зрозуміло, не дуже) і не є реалізацією за замовчуванням у деяких IDE. 12 грудня 2018 р.

Ви можете використати #pragma один раз, коли звертаєтеся до конкретного компілятора, #pragma once є нестандартною та є специфічною для деяких компіляторів C, тоді як #ifndef/#define/#endif працює майже на кожному компіляторі C. #pragma раз зменшує ймовірність помилок.

У мовах програмування C і C++ #pragma один раз є нестандартна, але широко підтримувана директива препроцесора, призначена для включення поточного файлу заголовка лише один раз до однієї компіляції.

Директива #ifndef перевіряє, чи не визначено макрос. Якщо вказаний ідентифікатор не визначено як макрос, рядки коду, що йдуть безпосередньо після умови, передаються компілятору.

Включити охорону, або іноді їх називають захистами макросів, захистами заголовків або захистами файлів, є поширеною ідіомою C/C++, яка дозволяє безпечно включати файл заголовка кілька разів. Нестандартна директива препроцесора #pragma once є майже еквівалентною альтернативою цій ідіомі.

Одне з відомих застережень #pragma once пов’язане з символічними посиланнями. Це можна побачити в GCC і MSVC, хоча обидва вказують на підтримку директиви. Помилка виявлення цієї рівності може призвести до того, що файл буде включено кілька разів, що призведе до порушення ODR.

Related Post

Що сталося з Деле Аллі в дитинстві?Що сталося з Деле Аллі в дитинстві?

Деле Аллі: футболіст каже, що в дитинстві зазнав сексуального насильства та торгував наркотиками. Деле Аллі виявив, що він був зазнав сексуального насильства у віці шести років і продавав наркотики у

Яка різниця між датчиком і кодувальником?Яка різниця між датчиком і кодувальником?

У першій частині ми згадували про це кодер – це датчик, який визначає кут повороту, лінійне переміщення та швидкість. Датчик — це елемент або електронний компонент, який виявляє зміни природних

Що в музиці навіює?Що в музиці навіює?

Сказати, що пісня/музика переслідує посилання наскільки глибоко це вражає слухача. Це пісня, яка не просто прикрашає поверхню вуха. Натомість це пісня, яка швидко проникає повз вухо до глибини серця людини