D中main()
入口点的正确说法是
void main(char[][] args)
{
}
但是,如果没有传递任何参数,我怎么知道?如果它是一个数组?
答案 0 :(得分:5)
void main(char [] [] args)
在现代D中,如果您的程序不需要参数,则规范签名为void main(string[] args)
或void main()
。
但是如果没有传递任何参数,我怎么知道它是一个数组呢?
检查数组的.length
属性。如果args.length==1
,则没有参数传递给程序。 (参数0总是程序本身,如在C / C ++中。)
答案 1 :(得分:2)
答案 2 :(得分:1)
正如我们的朋友已经说过的那样,请使用string[] args
:
import std.stdio;
int main(string[] args) {
if (args.length == 1) {
writeln("No arguments given. Aborting execution.");
return 1;
}
writeln(args);
return 42; // answer to everything
}
如果您有许多参数的相当复杂的情况,我建议您查看std.getopt模块。
以下是std.getopt文档中的示例:
import std.getopt;
string data = "file.dat";
int length = 24;
bool verbose;
enum Color { no, yes };
Color color;
void main(string[] args) {
auto helpInformation = getopt(
args,
"length", &length, // numeric
"file", &data, // string
"verbose", &verbose, // flag
"color", "Information about this color", &color); // enum
...
if (helpInformation.helpWanted) {
defaultGetoptPrinter("Some information about the program.",
helpInformation.options);
}
}