7

在下文中,我没有定义 type doesntexist

void myfunction(doesntexist argument)
{
}

GCC 4.7.2 说“ error: variable or field ‘myfunction’ declared void

我的问题是:编译器在这里想到的是什么函数名是 void 而不是参数类型?

[编辑]
在投票之前,请注意此问题的答案与错误的顺序有关,并-Wfatal-errors停止打印更直接相关的消息。这不仅仅是我在尝试一个稍微模糊的编译器信息。

4

3 回答 3

5

谢谢,@JoachimPileborg。未经编辑的错误日志没有包含任何有用的东西,它应该有!该评论将我引向问题和解决方案...从我的 makefile中删除-Wfatal-errors

19:17 >>> gcc -Wfatal-errors main.c
main.c:2:17: error: variable or field ‘myfunction’ declared void
compilation terminated due to -Wfatal-errors.

并删除-Wfatal-errors...

19:18 >>> gcc main.c 
main.c:2:17: error: variable or field ‘myfunction’ declared void
main.c:2:17: error: ‘doesntexist’ was not declared in this scope

问题解决了。


对于那些说“为什么 -Wfatal-errors 首先使用?”的人。: 我通常不想要所有的错误,因为第一个错误会触发其余的错误。在这种情况下,看起来错误是乱序给出的,或者至少是以意外的顺序给出的——我假设编译器会首先遇到‘doesntexist’ was not declared错误。

于 2013-11-16T11:58:19.703 回答
2

它绝对不是函数类型的问题,当函数参数包含未知类型时void,可能是g++编译器错误消息模式。

于 2013-11-13T08:35:30.440 回答
1

嗨@jozxyqk,您需要为参数指定一个类型,如果您在Coliru 中拥有的内容正确地代表了您的代码,那么您需要做的是为参数提供一个有效的数据类型,void myfunc(string argument)诸如此类void myfunc(int argument)

这里有一个关于数据类型的不错的资源,这里还有另一个。谷歌搜索一下如何使用 c++ 或类似的数据类型可能是值得的,这样你就可以找到一些关于它们及其用法的阅读材料。

此处链接的是修改后的版本,它显示字符串作为参数的有效数据类型和 int 参数的重载版本。

如果您需要更多信息,请与我们联系:)

于 2013-11-13T09:47:46.133 回答