[2] 命令行参数与Makefile - Puriney/practiCe-PAT GitHub Wiki
这一篇是一头一尾的故事,善始善终,龙头豹尾。
命令行参数
题库里有数十道题目,我不希望针对每一个题目写一个main
文件。我希望的是写一个程序,能够根据我提供的不同题号,去做相应的解答。能够做这种活在Python
里有argparse.ArgumentParser()
、在Perl
里有Getopt::Long
,在C
里可以主要用getopt()
。
当然因为我这里传入的参数其实有两层。第一层是专门选题号,第二层则是不同题号里可能需要不同的参数。有的题可能压根不需要输入输出文件,只打印在终端即可。所以getopt()
更加适合处理第二层参数。
我参考lh3的seqtk
来处理这两层命令行参数。
int main(int argc, char const *argv[])
{
if (argc == 1) return usage();
if (strcmp(argv[1], "02-0") == 0) {
ElementaryArithmetic();
}
else {
fprintf(stderr, "找不到['%s']题,请确认是否存在于题库中或者等待我更新\n", argv[1]);
return 1;
}
return 0;
}
Makefile
Xcode作为一个IDE完全有构建、编译、清空所有与make
一样的功能,只是有一个很尴尬的局面是Xcode会把编译好的程序存在一个名为Product
的地方,而这个地方每次我都是Show in Finder
来找到的,很是麻烦。直接了当地在终端里make
更加直接。
我这里只需要产生一个程序文件即可,我猜seqtk的Makefile
是产生多个,所以我暂时不学他的。
参考这里实现了目前这个可以成功编译的Makefile。谨记Makefile比较笨,没法处理空格,所以全都是Tab (\t),否则make时无法执行。
捎带一句,参考这里我知道我这种写法大概是比较笨的。
明日继续填猪肚