【发布时间】:2018-11-22 05:06:52
【问题描述】:
我正在学习 C 编程语言并尝试用它做一些基本的事情。我面临的问题是如何解析命令行参数。我阅读了this answer 并试图在标准N1570 中找到unistd.h 函数的库摘要。但不幸的是,它没有在那里定义(据我所知,仅适用于符合 POSIX 的操作系统)。
AFAIK Windows 并不是真正符合 POSIX 标准,所以类似于我上面提到的答案
#include <unistd.h>
int main(int argc, char *argv[]){
int opt;
while((opt = getopt(argc, argv, "ilv") != -1){
//do some with it
}
}
不是很便携。
问题:解析命令行参数的唯一标准化和可移植方法是自己做吗?
【问题讨论】:
-
几乎和 C 语言中的所有其他东西一样......但
getopt被广泛传播。 Windows 有很好的 gcc 版本,其中 getopt 工作得很好。嵌入式系统,它们不需要参数。 -
getopt()是 POSIX,getopt_long()是 GNU,你可以搜索其他库,或者自己做。 -
@Jean-FrançoisFabre 关于嵌入式系统的要点。没有考虑到。谢谢。
-
虽然 ISO/C 规范和 POSIX 定义了一些 libc 函数,但 POSIX 是一个超集,因此请遵循它来代替 ISO/C 函数。例如,POSIX 定义了与系统调用、网络套接字等相关的东西,而 ISO/C 没有。 linux 内核对 libc 函数(即系统调用)的支持遵循 POSIX 和 not ISO/C。在嵌入式系统上,您必须查阅嵌入式操作系统的文档(如 Jean-Francois 所述)。
-
是的,有标准。不,没有 A C 标准。
标签: c linux command-line posix