我对C ++很新,我在终端应用程序中开始使用它:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
if ( argc < 1 )
{
printHelp();
return 1;
}
return 0;
}
void printHelp()
{
cout << "Usage:";
cout << "vmftomap [filename]";
}
但是,我在_tmain中收到错误“'printHelp'标识符未找到”。由于函数直接在main下声明,我假设这是一个命名空间问题?我已经阅读了名称空间但我不知道在这种情况下会适用什么,因为我实际上没有为printHelp()明确定义一个。
答案 0 :(得分:1)
您必须在调用之前声明您的函数。没有必要定义它,但编译器必须至少知道它在解决函数调用时的存在,这意味着它必须在处理过程中遇到它的声明。你的翻译单位(即.cpp
档案):
#include "stdafx.h"
#include <iostream>
using namespace std;
// Declaration
void printHelp();
int _tmain(int argc, _TCHAR* argv[])
{
if ( argc < 1 )
{
printHelp();
return 1;
}
return 0;
}
// Definition
void printHelp()
{
cout << "Usage:";
cout << "vmftomap [filename]";
}
当然,您可以在printHelp()
之前直接定义main()
函数,从而使函数调用时编译器可以看到它:
#include "stdafx.h"
#include <iostream>
using namespace std;
// Definition
void printHelp()
{
cout << "Usage:";
cout << "vmftomap [filename]";
}
int _tmain(int argc, _TCHAR* argv[])
{
if ( argc < 1 )
{
printHelp();
return 1;
}
return 0;
}
答案 1 :(得分:0)
在C ++中,文件从上到下进行解析。除了少数例外,标识符必须在使用之前声明。这意味着您必须在printHelp()
之前移动_tmain()
的定义,或在_tmain()
之上添加转发声明:
void printHelp();
答案 2 :(得分:0)
在使用之前必须定义该功能。
将printHelp移到_tmain上方。
答案 3 :(得分:0)
在c ++中调用函数时,在调用之前,您必须:
在你的情况下,你没有。