Kod taki widziałem zwykle na początku plików nagłówkowych:
#ifndef HEADERFILE_H
#define HEADERFILE_H
A na końcu pliku jest
#endif
Jaki jest tego cel?
#pragma
jest a : aktywuje funkcję specyficzną dla kompilatora. Chociaż #pragma once
jest bardzo szeroko obsługiwany, jest niestandardowy.
info cpp
lub spójrz tutaj ) mówi: „nie jest rozpoznawana przez wszystkie preprocesory, więc nie można na niej polegać w przenośnym programie”. A GNU cpp optymalizuje wspólny i przenośny #ifndef
idiom, dzięki czemu jest tak samo wydajny jak #pragma once
.
#ifndef HEADERFILE_H
może naruszać przestrzeń nazw implementacji nazwy nagłówka zaczyna się od E
; identyfikatory zaczynające się od E
oraz cyfra lub duża litera są zastrzeżone dla <errno.h>
. Sugeruję #ifndef H_HEADERFILE
.