【发布时间】:2017-09-02 11:40:23
【问题描述】:
我正在尝试使用strndup 函数,但出现错误
错误:函数“strndup”的隐式声明 [-Werror=隐式函数声明]
我四处搜索,发现它不是标准函数,因此我必须使用不同的标志进行编译。但是,我通过编译以下内容收到了同样的问题:
-std=gnu11
-Wall
-Wextra
-Werror
-Wmissing-declarations
-Wmissing-prototypes
-Werror-implicit-function-declaration
-Wreturn-type
-Wparentheses
-Wunused
-Wold-style-definition
-Wundef
-Wshadow
-Wstrict-prototypes
-Wswitch-default
-Wunreachable-code
-D_GNU_SOURCE
我正在做一个作业,因此我必须使用所有这些,但我发现我必须使用 '-D_GNU_SOURCE' 进行编译才能让错误消失,但事实并非如此。
编辑:
我也有这些:
#define __STDC_WANT_LIB_EXT2__ 1
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "list.h"
非常感谢帮助解决此问题。
【问题讨论】:
-
发布一个例子!
-
您使用的是 Windows,也许是 mingw?
-
是 Codelite 中的 Windows 和 MinGW
-
MinGW appears to have some issues with
strdup()。当所有其他方法都失败时,自己实现strdup()很简单......
标签: c