2013-07-30 9 views
5

Mi stavo chiedendo, c'è un modo piacevole per usare i builtins __argc e __argv (come in Visual C++) in MinGW (sto già includendo windows.h), o dovrò fare qualcosa di più coinvolto per accedere a questi parametri. Mi piacerebbe così tanto piace avere solo questo lavoro di codice in MinGW (ma non sempre ottenere ciò che desideriamo per):Utilizzo di __argc e __argv in MinGW

#include <windows.h> 

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

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, INT) 
{ 
    return main(__argc, __argv); 
} 
+1

Utilizzare 'GetCommandLineW' e' CommandLineToArgvW' per recuperare i valori equivalenti. –

+0

Perché le versioni larghe? – Rollie

+0

Secondo la letteratura che ho visto, versioni ANSI regolari di quelle funzioni potrebbero non esistere. –

risposta

4

Queste non sono "comandi incorporati," sono variabili globali forniti da il runtime C. Sono dichiarati in <stdlib.h> in entrambe le intestazioni di libreria Visual C++ e in Stephan's MinGW distro. Se non sono dichiarati nella tua copia di <stdlib.h>, dichiarali tu stesso.

+0

Grazie, non ero a conoscenza di quella particolare distro. Solo per completezza, potresti mostrarmi (o collegarmi a qualcosa che mi mostrerà) come dichiararli correttamente? Grazie mille! –

+0

@MaxFeldkamp forse usando 'extern'. Come in 'extern char ** argv;'. Non ho ricevuto alcun messaggio sui simboli irrisolti con il mingw standard. – mlt

+0

Ho avuto una compilazione di successo ma un SEGV in fase di esecuzione con '__argc' e' __argv'. Tuttavia, sono stato in grado di usare '_argc' e' _argv' (un trattino basso piuttosto che due) senza problemi. – cxw