bonsoir,

j'analyse le code source d'un jeu et je remarque qu'il y a plusieurs programmes principaux


voici un bout de code du programme principal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
 
 
 
// Main top level initialization
bool fgMainInit( int argc, char **argv ) {
 
    // set default log levels
    sglog().setLogLevels( SG_ALL, SG_ALERT );
 
    string version;
#ifdef FLIGHTGEAR_VERSION
    version = FLIGHTGEAR_VERSION;
#else
    version = "unknown version";
#endif
    SG_LOG( SG_GENERAL, SG_INFO, "FlightGear:  Version "
            << version );
    SG_LOG( SG_GENERAL, SG_INFO, "Built with " << SG_COMPILER_STR << endl );
 
    // Allocate global data structures.  This needs to happen before
    // we parse command line options
 
    globals = new FGGlobals;
 
    // seed the random number generator
    sg_srandom_time();
 
    FGControls *controls = new FGControls;
    globals->set_controls( controls );
 
    string_list *col = new string_list;
    globals->set_channel_options_list( col );
 
    fgValidatePath("", false);  // initialize static variables
    upper_case_property("/sim/presets/airport-id");
    upper_case_property("/sim/presets/runway");
    upper_case_property("/sim/tower/airport-id");
    upper_case_property("/autopilot/route-manager/input");
 
    // Scan the config file(s) and command line options to see if
    // fg_root was specified (ignore all other options for now)
    fgInitFGRoot(argc, argv);
 
    // Check for the correct base package version
    static char required_version[] = "2.0.0";
    string base_version = fgBasePackageVersion();
    if ( !(base_version == required_version) ) {
        // tell the operator how to use this application
 
        SG_LOG( SG_GENERAL, SG_ALERT, "" ); // To popup the console on windows
        cerr << endl << "Base package check failed ... " \
             << "Found version " << base_version << " at: " \
             << globals->get_fg_root() << endl;
        cerr << "Please upgrade to version: " << required_version << endl;
#ifdef _MSC_VER
        cerr << "Hit a key to continue..." << endl;
        cin.get();
#endif
        exit(-1);
    }
 
    // Load the configuration parameters.  (Command line options
    // override config file options.  Config file options override
    // defaults.)
    if ( !fgInitConfig(argc, argv) ) {
        SG_LOG( SG_GENERAL, SG_ALERT, "Config option parsing failed ..." );
        exit(-1);
    }
 
    // Initialize the Window/Graphics environment.
    fgOSInit(&argc, argv);
    _bootstrap_OSInit++;
 
    fgRegisterWindowResizeHandler( &FGRenderer::resize );
    fgRegisterIdleHandler( &fgIdleFunction );
    fgRegisterDrawHandler( &FGRenderer::update );
 
#ifdef FG_ENABLE_MULTIPASS_CLOUDS
    bool get_stencil_buffer = true;
#else
    bool get_stencil_buffer = false;
#endif
 
    // Initialize plib net interface
    netInit( &argc, argv );
 
    // Clouds3D requires an alpha channel
    // clouds may require stencil buffer
    fgOSOpenWindow(get_stencil_buffer);
 
    // Initialize the splash screen right away
    fntInit();
    fgSplashInit();
 
    // pass control off to the master event handler
    fgOSMainLoop();
 
    // we never actually get here ... but to avoid compiler warnings,
    // etc.
    return false;
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
bool fgMainInit( int argc, char **argv )
fgInitFGRoot(argc, argv);
fgOSInit(&argc, argv);
netInit( &argc, argv );

1)pourquoi créer plusieurs programmes principaux?



2) qu'elle est l'importance des argc et des argv ?

merci !