编译器配置中的命令参数

时间:2010-02-26 19:34:19

标签: c++ c visual-studio visual-studio-2008

[edit]我的意思是说“编译器配置中的命令参数”。标题。

我正试图进入游戏模式。我正在尝试实现源sdk。其中一个步骤是在我的编译器配置中进行调试,并将一些数据添加到命令参数

-dev -sw -game "C:\Program Files (x86)\Steam\steamapps\SourceMods\firstmod"

现在我知道命令参数是什么。它们通过WinMain的参数传递,并通过编译器配置中的名称进行判断。我认为这与它有关。或者可能不是。我只是不确定上述是否会被视为1个参数或多个参数。它通过传递一个目录来实现什么。他们对这些信息并不太详细。

2 个答案:

答案 0 :(得分:1)

在普通(读取控制台)C / C ++应用程序中,您将拥有带有以下声明的程序入口点:

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

这里argc是命令行“strings”的数量,包括命令本身,而argv是这些字符串的数组。因此,在您的示例中,argc为5(添加程序名称),argv[0]是程序的名称,argv[1]"-dev"等。< / p>

现在在Windows下,GUI应用程序不同 - 入口点被声明为:

int WINAPI WinMain(      
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
);

所以整个命令行(这次不包括应用程序名称)由lpCmdLine指向,所以当你把它放在上面时它就是一个字符串。有一些辅助函数来分割该字符串。在MSDN上查看这两个条目:

答案 1 :(得分:1)

您的示例有四个参数:

  1. -dev
  2. -sw
  3. -game
  4. C:\Program Files (x86)\Steam\steamapps\SourceMods\firstmod
  5. 因为最后一个参数被引号括起来,所以Windows命令行解析器会将它视为一个参数。

    至于它试图通过传递目录来实现的目标,如果不知道代码的作用,就不可能确定。但有一种猜测是,构建将生成多个相互关联的文件,这些文件都应该存在于一个目录中;所以你指定目录,那里将创建所有文件。