In C++11, puoi dichiarare variabili globali e prototipi di funzioni sulla stessa riga?
Mentre stavo scrivendo del codice C++ 11:
#include <bits/stdc++.h>
using namespace std;
int a, b, array[25];
int function();
int main() {
... (not important)
per curiosità, ho inserito le dichiarazioni delle variabili nella stessa riga del prototipo della funzione:
#include <bits/stdc++.h>
using namespace std;
int function(), a, b, array[25];
int main() {
... (not important)
È stato compilato correttamente su XCode (impostato su [-std=c++11]) e a, b, array[]
potrebbe essere utilizzato come normali variabili/array.
Funzionerà con la maggior parte/tutti i compilatori e va bene/sconsigliato? Perché funziona in C++ (i prototipi di funzione e le dichiarazioni di variabile sembrano abbastanza diversi...)
Grazie in anticipo per il vostro tempo.
Risposte
La dichiarazione dice che function(x)
, a
, b
, e array[i]
sono tutte int
s.
(Questa è la "lettura vecchia scuola" dei tipi - funziona sempre in C, ma C++ l'ha rotto; int *x
può essere letto " *x
è un int
", ma int &x
non può essere letto " &x
è un int
".)
Questo è andato bene fin dai primi giorni di C (quindi, per mezzo secolo circa), e non è limitato alle dichiarazioni globali.
È anche molto confuso e non troverai molti che pensano che sia una buona idea.
La maggior parte delle persone ha ormai rinunciato a dichiarare più di una variabile in una riga.
È meno leggibile, è facile dimenticare un inizializzatore e oggigiorno gli schermi sono in grado di visualizzare molte righe contemporaneamente.