【发布时间】:2011-07-02 22:37:00
【问题描述】:
大家好,我希望你能帮助我理解为什么getopt使用int以及getopt中optopt变量的处理。对 C++ 很陌生。
看getopt,optopt被定义为一个整数。 http://www.gnu.org/software/libtool/manual/libc/Using-Getopt.html#Using-Getopt
这里的例子, http://www.gnu.org/software/libtool/manual/libc/Example-of-Getopt.html#Example-of-Getopt
在这个例子中,我不明白的部分是如何在 switch 语句中将整数与字符进行比较。
据我了解,geopt 的主要参数虽然是字符数组 argv,但它处理返回一个 int 的事实对我来说似乎很奇怪,我的期望是一个 char,并且我需要转换任何数字参数诠释。 char 是否会自动转换为它的 ANSI 代码并再次转换回来? printf 语句
fprintf (stderr, "Unknown option `-%c'.\n", optopt);
据我所知,期待一个字符,但被赋予一个整数。为什么getopt在处理字符数组时会使用int?
我是否遗漏了一些非常明显的东西?我一定是。
【问题讨论】:
-
不是一个真正的 C++ 问题...添加了 C 标签
-
@neuro:添加 C 标签是个好主意,但如果 OP 实际上是在编写 C++,这非常重要,因为这是语言不同的地方之一。
标签: c++ c integer-promotion