Eu tenho visto um código como este geralmente no início dos arquivos de cabeçalho:
#ifndef HEADERFILE_H
#define HEADERFILE_H
E no final do arquivo é
#endif
Qual é o propósito disso?
#pragma
é: ele ativa um recurso específico do compilador. Embora #pragma once
seja muito amplamente apoiada, é fora do padrão.
info cpp
ou veja aqui ) diz "ela não é reconhecida por todos os pré-processadores, portanto você não pode confiar nela em um programa portátil". E o GNU cpp otimiza o #ifndef
idioma comum e portátil, tornando-o tão eficiente quanto #pragma once
.
#ifndef HEADERFILE_H
pode violar o namespace da implementação do nome do cabeçalho que acontece com o início E
; os identificadores que começam com E
e um dígito ou letra maiúscula são reservados para <errno.h>
. Eu sugiro #ifndef H_HEADERFILE
.