Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.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
C++ Makefile:what';这个警告的名字是什么?_C++_C_Gcc - Fatal编程技术网

C++ Makefile:what';这个警告的名字是什么?

C++ Makefile:what';这个警告的名字是什么?,c++,c,gcc,C++,C,Gcc,我正在编译一个第三方.c文件 我无意修改源代码。我不是.c程序员。代码不是我的 编辑:这是我需要编译的文件夹代码,为了精确起见,我只需要magiskboot;这是一个更大的工具的特定部分。官方makefile使用 结果我想要的特定可执行文件有“错误”。所以 我只是试着独立构建它 我在使用gcc编译时遇到此警告 ../include/utils.h:89:37: warning: ‘struct ucred’ declared inside parameter list void get_cli

我正在编译一个第三方.c文件

我无意修改源代码。我不是.c程序员。代码不是我的

编辑:这是我需要编译的文件夹代码,为了精确起见,我只需要magiskboot;这是一个更大的工具的特定部分。官方makefile使用 结果我想要的特定可执行文件有“错误”。所以 我只是试着独立构建它

我在使用gcc编译时遇到此警告

../include/utils.h:89:37: warning: ‘struct ucred’ declared inside parameter list
void get_client_cred(int fd, struct ucred *cred);
这类警告的名称是什么?如何抑制它


我搜索了,但没有找到正确的标志

移动结构声明,使其位于函数声明之前。我知道您不想编辑第三方源代码,但这就是修复此警告的方法。

添加
-将ucred.h
包含到GCC命令行

或者,使用以下内容创建一个新的.c源文件:

#include "ucred.h"
#include "misc.c" // <- name of the original .c file you were compiling
#包括“ucred.h”

#include“misc.c”/似乎没有命令行标志来仅抑制此警告。(通过将第二个参数的0传递给
warning\u at
)您可以添加
-w
以抑制所有警告。如果代码实际上是C++,这是不可能的,但可能的,使用G+而不是GCC可能会修复这个问题。(我预计如果代码最初是C++编写的,那么很多其他问题是错误的)

这是一个香草C编译错误——它与MaxFrm无关。它与Mag文件无关。如何抑制警告?通过修正它告诉你的。我认为,否决票是相当困难的。似乎OP只是想将
-Wno-…
标志添加到CFLAGS,而不知道是哪个one@xanoetux仅仅消除编译器警告很少是答案。您想修复它们。警告并没有说它未声明。@Weather Vane:是的,它实际上是在暗示。否则,就不会有任何警告。@Weather Vane:警告基本上是这样说的:“您正在声明一个具有原型作用域的新结构类型。它在该作用域之外将不可见。”。如果此时已经知道结构类型,对它的引用就不会被视为新的声明。@WeatherVane:警告实际上是说,
struct ucred
以前没有声明过。无论以前是否声明过
struct ucred
,将
struct ucred*cred
声明为参数都是完全合法的。但是,如果它之前没有声明,那么它几乎毫无用处,因为它引用了一个新创建的不完整类型。(如果这是语言所禁止的,这可能会很好,但事实并非如此。因此,合格的编译器不能拒绝它。)@Weather Vane:这里没有什么可反对的——您的代码是有效的。然而,
voidfoo(structsp){}structsp=0;int main(){foo(p);}
应该触发一条诊断消息,因为这是两种不相关的
结构类型。MSVC没有抱怨,这是MSVC中的一个错误。通常gcc会给出警告的名称,除非您使用-fno诊断显示选项(请参阅),我认为您可以过早启用发布的警告。我们只是建议使用-fdiagnostics显示选项重新启用警告。谢谢,我知道,但我问如何抑制它。如果不可能,阿门,但你还没有回答我的确切问题。如果你按照我的建议去做,警告信息将不再出现。为什么在函数声明之前将结构声明移动到的答案有两张赞成票,而我的答案,基本上是相同的建议,只是更具体地说如何做,有一张反对票?