错误:变量或字段'myfunction'声明为void

时间:2013-11-13 08:11:54

标签: c++ c gcc compiler-errors

在下文中,我没有定义类型doesntexist

void myfunction(doesntexist argument)
{
}

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

我的问题是这样的:这里的编译器通过什么来引用函数名称为void而不是参数类型?

[修改]
在进行downvoting之前,请注意此问题的答案与错误的顺序和-Wfatal-errors阻止更直接相关的消息打印有关。这不仅仅是我对一个略微模糊的编译器消息。

3 个答案:

答案 0 :(得分: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错误。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

您好@jozxyqk需要为参数指定一个类型,如果Coliru中的内容正确代表您的代码,您需要做的是为参数提供有效的数据类型,例如{{ 1}}或void myfunc(string argument)等。

数据类型here和另一个here有一个不错的资源。可能值得Google搜索how to use data types in c++或类似内容,以便您可以找到一些关于它们及其用法的阅读材料。

Linked here是一个修改后的版本,它将字符串显示为参数的有效数据类型,并显示int参数的重载版本。

如果您需要更多信息,请告诉我们。)