Attualmente sto studiando per un esame finale del corso CS e mi sono imbattuto in un problema minore (forse importante?) Relativo alla sintassi di C++ #ifndef.Sintassi #ifndef per includere le protezioni in C++
Ho guardato la sintassi per #infndef quando lo si utilizza come una guardia #include, e la maggior parte sul web sembrano dire:
#ifndef HEADER_H
#define "header.h"
...
#endif
Ma scivoli d'istruzione di mia classe mostrano esempi come:
#ifndef __HEADER_H__
#define "header.h"
...
#endif
Mi stavo chiedendo cosa (se c'è) la differenza era tra i due. L'esame molto probabilmente mi chiederà di scrivere una guardia di #include, e so che la saggezza convenzionale è di andare con quello che dice il prof/tutor, ma se c'è una differenza durante la compilazione mi piacerebbe sapere.
Sede [qui] (http://stackoverflow.com/questions/228783) per una discussione delle regole il tutor sta rompendo, e [qui] (http://stackoverflow.com/questions/3345159) per un esempio cosa potrebbe andare storto se li rompi. Inoltre, includi guardie vai * dentro * l'intestazione. –
Così com'è, il codice nascosto non ha senso: non si può '# define' una stringa letterale. Intendevi '#include" header.h "' (il testo originale) o '#define HEADER_H' (cosa succede di solito all'interno di un preambolo di intestazione)? – Attila