In C ++, perché la funzione principale usa 'char * argv []'?

3

Mi chiedevo perché C ++ utilizza il seguente prototipo di funzione per la funzione main() :

int main(int argc, char *argv[]);

invece di qualcosa di simile:

int main(std::vector<std::string> argv);

Qual è il ragionamento alla base dell'uso del primo? Perché non andare semplicemente con la versione (molto più moderna) usando i vettori e le stringhe? È per compatibilità all'indietro, o c'è qualcosa che mi manca?

    
posta InputUsername 14.05.2015 - 18:13
fonte

1 risposta

11

Una domanda simile è stata richiesta su StackTransfer .

In la risposta accettata , Nicol Bolas sottolinea che non è nello standard perché deve essere proposto e votato. Nel modo in cui funziona C ++, le persone scrivono proposte di modifiche, che vengono votate. Tuttavia, sottolinea che è una funzione di convenienza e non aggiunge molto valore ai metodi attuali.

In un'altra risposta , iammilind suggerisce che è contro la filosofia del C ++. Ciò aggiungerebbe una dipendenza alle librerie <string> e <vector> . L'attuale implementazione usa tipi built-in e indipendenti, che non impongono la biblioteca alle persone. Inoltre, se un sistema non implementasse la libreria, non sarebbe in grado di avviare l'applicazione.

Sono fornite anche altre risposte, ma le due sopra citate sono il punteggio più alto.

    
risposta data 23.05.2017 - 14:40
fonte

Leggi altre domande sui tag