我知道这是一个noobie问题,但我该怎么做?...
#include "stdafx.h"
#include<iostream>
int main()
{
TypeText();
}
int TypeText()
{
printf("Text");
}
答案 0 :(得分:3)
当编译器看到对TypeText
的调用时,它还不知道TypeText
存在以及它的签名是什么。您需要声明main
上面的函数:
void TypeText();
int main()
{
TypeText();
}
void TypeText()
{
printf("Text");
}
或者,您可以将定义移到main
上面:
void TypeText()
{
printf("Text");
}
int main()
{
TypeText();
}
请注意,TypeText
不返回任何内容,因此应返回类型void
。您可以对main
说同样的内容,但如果您没有明确提供退货声明,则main
实际上会return 0;
。
答案 1 :(得分:0)
您可以重新排序函数并定义main
last(在定义TypeText()
函数后...)。
或者您可以通过插入
来声明TypeText()
功能
int TypeText(void);
在main
之前(或在您自己的头文件中)。
BTW,return
正文中缺少TypeText
语句(或者您应该将其声明为返回void
)
编译文件时,不要忘记启用所有警告和调试信息。使用GCC意味着使用g++ -Wall -g
进行编译。并在适当的时候使用您的调试器(gdb
...)。
答案 2 :(得分:0)
这看起来需要预先声明才能帮助C ++编译器。你可以谷歌这个话题,看起来有人做了一个例子here。这种特殊类型的声明称为function prototype。
#include "stdafx.h"
#include<iostream>
int TypeText(); //this method is now predeclared to be recognized in main()
int main()
{
TypeText();
}
int TypeText()
{
printf("Text");
}
答案 3 :(得分:0)
在程序顶部包含以下代码:
void TypeText();
编译器向下读,不知道你在说什么。如果在编译器上面包含代码,当它看到被调用的函数将搜索它应该做什么时。