【发布时间】:2018-11-10 20:11:25
【问题描述】:
我想使用 popen。它在 stdio.h 中。我包括了它,但编译器看不到它 -std=c11。它确实在没有 -std=c11 的情况下编译。
#include <stdio.h>
int main(void)
{
popen("ls *","r");
}
gcc -std=c11 popen_test.c
popen_test.c:在函数“main”中:
popen_test.c:5:4: 警告:函数‘popen’的隐式声明 [-Wimplicit-function-declaration]
popen("ls *","r"); ^~~~~
它隐藏在stdio.h中
#ifdef __USE_POSIX2
手册页说它在以下情况下可用:
_POSIX_C_SOURCE >= 2 || /* Glibc 版本
【问题讨论】:
-
popen不是标准 C 的一部分。 -
@melpomene 能否在源码中开启和关闭-std=c11?
-
你这是什么意思?或者也许是一个更好的问题:您想通过指定
-std=c11来达到什么目的? -
@melpomene 我想要C11的所有功能
-
好吧,例如
-std=gnu11会给你加上所有 GNU 扩展。