gpt4 book ai didi

c - 如何在 C 中创建带有可选参数的函数?

转载 作者:太空狗 更新时间:2023-10-29 17:21:26 24 4
gpt4 key购买 nike

最近在写一个文件打开的程序时遇到了一个问题。

让我解释清楚我的问题。这里我以调用open为例。

创建文件:

open("file_name", O_CREAT, 0766); //passing 3 parametrs

打开一个文件:

open("file_name", O_RDWR); //only 2 arguments.

然后我清楚地观察到这一点,它也适用于main()

main(void) //worked
main(int argc, char **argv); //worked
main(int argc) //worked and it's doesn't give an error like "too few arguments".
main() //worked

那么我们如何创建这些可选参数呢?编译器究竟如何验证这些原型(prototype)?如果可能,请编写示例程序。

最佳答案

open 函数被声明为可变参数函数。它看起来像这样:

#include <stdarg.h>

int open(char const * filename, int flags, ...)
{
va_list ap;
va_start(ap, flags);

if (flags & O_CREAT)
{
int mode = va_arg(ap, int);
// ...
}

// ...

va_end(ap);
}

除非您指出它们确实存在,否则不会使用进一步的参数。

printf 使用相同的构造。

手册并不总是明确说明这一点,因为唯一可能的两个签名是 (char const *, int)(char const *, int, int),因此没有必要向您揭示该函数实际上接受可变参数。 (您可以通过尝试编译像 open("", 1, 2, 3, 4, 5, 6) 这样的东西来测试它。)

关于c - 如何在 C 中创建带有可选参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19212040/

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