Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译器忽略#定义"GNU"源 我不是以英语为母语的人,所以请原谅我的拼写或语法错误 我不是编译专家,也没有任何关于构建及其错误的有用经验 我是C#程序员,主要在MS环境中工作 我只知道3个“必须知道如何在Linux命令中生存”。/configure,make&makeinstall”来自我的Linux小体验 我的发展环境 我正在使用Windows 7工作站 使用Cygwin和MinGW(作为Linux的“替代品”)进行编译 问题_C_Windows_Compiler Errors_Mingw32 - Fatal编程技术网

编译器忽略#定义"GNU"源 我不是以英语为母语的人,所以请原谅我的拼写或语法错误 我不是编译专家,也没有任何关于构建及其错误的有用经验 我是C#程序员,主要在MS环境中工作 我只知道3个“必须知道如何在Linux命令中生存”。/configure,make&makeinstall”来自我的Linux小体验 我的发展环境 我正在使用Windows 7工作站 使用Cygwin和MinGW(作为Linux的“替代品”)进行编译 问题

编译器忽略#定义"GNU"源 我不是以英语为母语的人,所以请原谅我的拼写或语法错误 我不是编译专家,也没有任何关于构建及其错误的有用经验 我是C#程序员,主要在MS环境中工作 我只知道3个“必须知道如何在Linux命令中生存”。/configure,make&makeinstall”来自我的Linux小体验 我的发展环境 我正在使用Windows 7工作站 使用Cygwin和MinGW(作为Linux的“替代品”)进行编译 问题,c,windows,compiler-errors,mingw32,C,Windows,Compiler Errors,Mingw32,我想在windows上编译C源代码,它主要是为Linux发行版编写的。 /“配置”可以正常工作。 如果我使用命令make编译源代码,我会遇到以下错误: 错误 grib_keys.c:50:34: 错误:“alphasort”未声明(此函数首次使用) 研究: 我的研究证明,这个问题已经解决了,但不幸的是,答案对我不起作用。 解决方案说,我只需要包括以下内容:#定义"GNU"源代码 我试过了,但正如前面所说的,它不起作用 我将其包含在以下文件中: - grib_keys.c - config.

我想在windows上编译C源代码,它主要是为Linux发行版编写的。
/“配置”可以正常工作。
如果我使用命令make编译源代码,我会遇到以下错误:

错误
grib_keys.c:50:34:
错误:“alphasort”未声明(此函数首次使用)

研究: 我的研究证明,这个问题已经解决了,
但不幸的是,答案对我不起作用。


解决方案说,我只需要包括以下内容:#定义"GNU"源代码
我试过了,但正如前面所说的,它不起作用

我将其包含在以下文件中:

- grib_keys.c
- config.h
并试图以并发而非并发包含的方式编译它们

最后,文件的重要部分如下所示:

config.h
********
/* Add #define _GNU_SOURCE to solve  "'alphasort' undeclared" error  */
#define _GNU_SOURCE

grib_keys.c
***********
#define _GNU_SOURCE
count = scandir(dir, &files, 0, alphasort);
我想获得的和想知道的:
  • 我想编译下面命名的API的全部源代码,以便在windows操作系统上使用二进制文件
  • 此外,我还想知道,我是否将“#define _GNU_SOURCE”-标记
    写到了正确的位置,或者我是否犯了错误
下载: Api

如果要声明功能测试宏,如
\u GNU\u SOURCE
,则必须确保预处理器在看到使用它们的任何代码之前先看到它们。这通常意味着必须在处理任何系统头之前处理它们。因此,最好的位置是在每个C源文件(而不是标题)的顶部,在任何
#include
指令之前

话虽如此,您需要一个应用于实际使用的C库及其开发头的解决方案。对于MinGW来说,这似乎是微软的C库,它似乎没有记录一个
alphasort()
函数


即使您使用的是glibc(例如Cygwin的版本),我的glibc文档也声称
alphasort()
所需的特性测试宏要么是
\u BSD\u SOURCE
要么是
\u SVID\u SOURCE
,而不是
\u GNU\u SOURCE
。自从glibc 2.10以来,似乎最好使用
\u POSIX\u C\u SOURCE
=
200809L
,或者
\u XOPEN\u SOURCE
=
700
,因为这反映了函数在POSIX.1-2008中被标准化的事实。

尝试将
-D\u GNU\u SOURCE
添加到编译器调用中(或者添加到
CFLAGS
).也许MinGW根本没有实现这个功能?@cremno,我不确定OP的MinGW提供了什么版本的glibc,但glibc已经有了
alphasort()
很长一段时间了。就像在《Glibc2》的每一个版本中一样,“有了Cygwin和MinGW”——这很可能就是问题所在。这两个是两个不同的产品,不需要同时使用。根据你的帖子,我想说你想使用Cygwin而不是MinGW(更多信息请参见)。@JohnBollinger:MinGW不使用glibc,Cygwin使用newlib(显然是实现它的)。
\u GNU SOURCE
请求一切,包括发布glibc(或newlib)时最新的
\u XOPEN\u源代码,因此,在cygwin中获得
alphasort
声明就足够了。但是在mingw上没有用,这是主要的问题。实际上看起来mingw在
\u GNU\u SOURCE
上运行良好,但是mingw64没有。。。