gpt4 book ai didi

c - execvpe 隐式声明错误

转载 作者:行者123 更新时间:2023-11-30 16:47:23 28 4
gpt4 key购买 nike

我正在c中测试execvpe(),我尝试了下面的代码,这导致错误“函数‘execvpe’的隐式声明在C99 [-Wimplicit-function-declaration]中无效”。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _GNU_SOURCE
#include <unistd.h>

int main(int argc, char const *argv[])
{
//execl("/bin/echo", "echo", "Hello, world", NULL);
char *path = getenv("PATH");
char pathenv[strlen(path) + sizeof("PATH=")];
sprintf(pathenv, "PATH=%s", path);
char *envp[] = {pathenv, NULL};
char *tests[] = {"ls", "-lR", NULL};
execvpe(tests[0], tests, envp);
fprintf(stderr, "failed to execute \"%s\"\n", tests[0]);
return 0;
}

然后我如下测试此代码以测试现有状态(我从 Compiler warnings for execvpe function 复制的,这次没有错误。有谁可以帮助我找出上面的代码有什么问题吗?谢谢!

#include <unistd.h>
extern int execvpe(const char *file, char *const argv[], char *const envp[]);

最佳答案

#define _GNU_SOURCE 指令移至任何 #include 指令之前,例如

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

在 Glibc 中,所有这些头文件都会引入 features.h,它根据 _XOPEN_SOURCE_POSIX_SOURCE_GNU_SOURCE 等。第一次包含时,未设置。当您进入 unistd.h 时,features.h 已经包含在内,不会再次应用。

关于c - execvpe 隐式声明错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43360387/

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