gpt4 book ai didi

c - getopt、optarg 和可选参数

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:27 27 4
gpt4 key购买 nike

这个问题特别涉及 gcc 中可选参数的 getopt。当一个选项被定义为有一个可选参数并且没有给出参数时,optarg 被设置为一个空指针或一个指向空字符串的指针。手册似乎没有处理这种情况。行为是否得到保证?

巴里

最佳答案

带有可选参数的

getopt 是 POSIX 函数的实现定义扩展。如果文档中未说明它的行为方式,则显式检查 optarg == NULL 是最安全的。如果它不是 NULL,我个人认为空字符串不会表示缺少参数,但它可以。

当没有检测到参数时,我自己的实现将 optarg 设置为 NULL,但它可以很容易地指向包含 0 字节的静态对象的内存地址getopt 函数的源文件中读取的第一个字节,例如 char noarg = 0;。顺便说一句,GNU libc 实现也将它设置为 NULL,但没有记录当前的行为。

如果您想在任何一种行为中保持安全,尤其是由于缺乏文档,我建议您执行以下操作:

if (optarg && *optarg) {
/* Argument present */
}
else {
/* No argument */
}

关于c - getopt、optarg 和可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21123992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com