Come altri hanno detto prima, una convenzione molto comune è quello di utilizzare la versione maiuscola del nome, e il punto sostituito da un carattere di sottolineatura: foo.h -> FOO_H
Tuttavia, questo può portare a conflitti di nomi con nomi semplici e/o comuni. Per questo motivo, intestazione autogenerated come stdafx.h in progetti non vuoti di Visual C++ C accoda qualche stringa casuale, come:
#ifndef FOO_H__NsknZfLkajnTFBpHIhKS
#define FOO_H__NsknZfLkajnTFBpHIhKS
#endif
http://www.random.org/strings/ è un generatore casuale utile per questo.
Inoltre, se il file è parte di un modulo, o il suo contenuto risiede in uno spazio dei nomi specifici, tendo a aggiungere che alla guardia troppo:
#ifndef SOMECOMPONENT_FOO_H__NsknZfLkajnTFBpHIhKS
#define SOMECOMPONENT_FOO_H__NsknZfLkajnTFBpHIhKS
namespace somecomponent
{
...
}
#endif
fonte
2011-02-01 21:06:11
Mentre il nome può essere più o meno intuitivo, il fatto è che con una piccola esperienza smetti di leggere quelle righe. Gli occhi e il cervello si abituano a "#ifdef blahblah ..." e praticamente non leggo quasi mai ciò che viene controllato, è una guardia di inclusione. –
Un punto di vista piuttosto utile al riguardo: http://stackoverflow.com/questions/1744144/adding-an-include-guard-breaks-the-build/1744302#1744302 –
Chiunque stia facendo lo sviluppo in C++ è stato meglio abituarsi a riconoscere le protezioni di intestazione molto velocemente. Seguirà SEMPRE lo standard che stai vedendo. La pratica "migliore" (tra virgolette perché è richiesta) consiste nel mettere prima ifndef, definire immediatamente dopo e terminarlo alla fine del file. Ti suggerisco di imparare a riconoscere questo al più presto. –