Penso che qui ci si stia confondendo a causa dell'errata (o mancanza di comprensione) dello scope.
Quando si dice che una dichiarazione di int main;
viene passata dal compilatore, suppongo che si stia dichiarando nell'ambito di una funzione. Ma, se provi a dichiararlo in ambito globale, il compilatore genererà un errore di ridefinizione.
Quindi, fintanto che non si hanno due identificatori identici nello stesso ambito, il compilatore sarà soddisfatto e ti permetterà di avere la tua strada.
Il seguente codice determina un errore redeinition:
int main;
int main()
{
printf("In main\n");
}
Il codice qui sotto non perché la portata principale è limitato solo all'interno della funzione e compilatore considera la variabile int main
e il risultato viene stampato come 5.
int main()
{
int main = 5;
printf("In main, value of main is %d\n", main);
}
il codice qui sotto invece stamperà l'indirizzo del principale
int main()
{
printf("In main, value of main is %d\n", main);
}
EDIT: Dopo aver letto i vari commenti, mi sento il problema chiave qui è che non stanno avendo una funzione principale a tutti, che si dovrebbe avere per un programma "C" per iniziare a lavorare. Se non hai una funzione principale, ma dichiari semplicemente una variabile int main;
, il tuo codice potrebbe ancora essere compilato, ma quando eseguirai ci sarà confusione e caos dato che main è una variabile intera, mentre dovrebbe essere una funzione. Ma, a patto che tu tenga sotto controllo il/i tuo/i principale/i come da mia risposta sopra, dovresti fare bene.
Si può andare this link, che spiega il concetto di compilazione e l'esecuzione di un programma C
non lo fa semplicemente dichiarare un intero chiamato 'main'? – Rob
@Rob Tuttavia, quando ho provato a eseguire "int x;" CodeBlocks mi dà questo errore: riferimento indefinito a 'WinMain @ 16 ' –
Puoi sicuramente avere il tuo programma in esecuzione con esso, anche se alcuni compilatori lanciano un avvertimento se dichiari una variabile chiamata 'main':' warning: 'main' è di solito una funzione' – Rob