pragma once – niestandardowa, ale szeroko obsługiwana dyrektywa kompilatora w językach programowania C i C ++. Jest zaprojektowana w celu zapobiegania zawarcia kodu źródłowego wiele razy w jednej kompilacji. Dyrektywa #pragma once funkcjonuje podobnie jak tzw. – wzorzec projektowy wykorzystujący standardowe dyrektywy preprocesora, ale z dodatkowymi zaletami, w tym: mniej kodu, unikanie kolizji nazw, a czasem nawet poprawę szybkości kompilacji. Z drugiej strony, #pragma once niekoniecznie jest dostępna we wszystkich kompilatorach, a jej implementacja jest zawiła i może być zawodna.
Przykład Plik „grandparent.h”#pragma once
struct foo { int member;
Plik „parent.h” #include "grandparent.h"
Plik „child.c” #include "grandparent.h" #include "parent.h"W tym przykładzie zawarcie grandparent.h zarówno w parent.h jak i child.c zwykle spowodowałoby błąd kompilacji, ponieważ struktura o nazwie foo może być zdefiniowana tylko raz w danej kompilacji. Dyrektywa #pragma once istnieje po to żeby uniknąć wielokrotnego zawarcia pliku grandparent.h.
Zalety Użycie#pragma once umożliwia preprocesorowi C dołączenie pliku, gdy jest potrzebny, w przeciwnym razie zignorowanie dyrektywy #include.