[edit]我的意思是说“编译器配置中的命令参数”。标题。
我正试图进入游戏模式。我正在尝试实现源sdk。其中一个步骤是在我的编译器配置中进行调试,并将一些数据添加到命令参数
-dev -sw -game "C:\Program Files (x86)\Steam\steamapps\SourceMods\firstmod"
现在我知道命令参数是什么。它们通过WinMain的参数传递,并通过编译器配置中的名称进行判断。我认为这与它有关。或者可能不是。我只是不确定上述是否会被视为1个参数或多个参数。它通过传递一个目录来实现什么。他们对这些信息并不太详细。
答案 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)
您的示例有四个参数:
-dev
-sw
-game
C:\Program Files (x86)\Steam\steamapps\SourceMods\firstmod
因为最后一个参数被引号括起来,所以Windows命令行解析器会将它视为一个参数。
至于它试图通过传递目录来实现的目标,如果不知道代码的作用,就不可能确定。但有一种猜测是,构建将生成多个相互关联的文件,这些文件都应该存在于一个目录中;所以你指定目录,那里将创建所有文件。