|
Microsoft C/C++ 代码使用的命令行分析规则特定于 Microsoft。 在解释操作系统命令行上给出的参数时,运行时启动代码使用这些规则:
参数用空白分隔,空白可以是一个空格或制表符。
第一个参数 (argv[0]) 是经过专门处理的。 它表示程序名称。 因为它必须是有效的路径名,因此允许用双引号 (") 括起来一些部分。 双引号不包含在 argv[0] 输出中。 用双引号括起来的部分可以防止将空格或 tab character 解释为参数的末尾。 此列表中的后续规则不适用。
将双引号括起来的字符串解释为单个参数,哪怕其中可能包含空格 character。 带引号的字符串可以嵌入在自变量内。 未将插入点 (^) 识别为转义 character 或者分隔符。 在带引号的字符串中,一对双引号被解释为单个转义的双引号。 如果命令行结束时未发现后双引号,则到目前为止读取的所有 character 将输出为最后一个参数。
前面有反斜杠的双引号 (\") 被解释为原义双引号 (")。
反斜杠按其原义解释,除非它们紧位于双引号之前。
如果偶数个反斜杠后跟双引号,则每对反斜杠 (\\) 中有一个反斜杠 (\) 被置于 argv 数组中,而双引号 (") 被解释为字符串分隔符。
如果奇数个反斜杠后跟双引号,则每对反斜杠 (\\) 中有一个反斜杠 (\) 被置于 argv 数组中。 将双引号解释为包含 remaining 反斜杠的转义序列,导致将原义双引号 (") 置于 argv 中。 |
|