之前移动< Primelp()/Cyto>的定义,或者在代码> > TyMin()/:< /P>前添加一个前向声明。,c++,namespaces,C++,Namespaces" /> 之前移动< Primelp()/Cyto>的定义,或者在代码> > TyMin()/:< /P>前添加一个前向声明。,c++,namespaces,C++,Namespaces" />

VS2012-为什么主文件中的函数在\u tmain中不可见? 我对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]"; } #包括“stdafx.h” #包括 使用名称空间std; int _tmain(int argc,_TCHAR*argv[] { 如果(argc文件是从上到下解析的,除了少数例外,在使用之前必须声明标识符,这意味着必须在前TSN()/代码>之前移动< Primelp()/Cyto>的定义,或者在代码> > TyMin()/:< /P>前添加一个前向声明。

VS2012-为什么主文件中的函数在\u tmain中不可见? 我对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]"; } #包括“stdafx.h” #包括 使用名称空间std; int _tmain(int argc,_TCHAR*argv[] { 如果(argc文件是从上到下解析的,除了少数例外,在使用之前必须声明标识符,这意味着必须在前TSN()/代码>之前移动< Primelp()/Cyto>的定义,或者在代码> > TyMin()/:< /P>前添加一个前向声明。,c++,namespaces,C++,Namespaces,在使用该函数之前,必须先定义它 将printHelp移到\u tmain上方。在调用函数之前必须声明函数。不必定义它,但编译器必须至少在解析函数调用时知道它的存在,这意味着它必须在处理转换单元期间满足它的声明(即.cpp文件): 当你在C++中调用函数时,在调用之前,你必须要么: 有一个功能的原型 有整个功能的定义 在你的情况下,两者都没有。考虑一下这篇帖子:啊,很有意义。我习惯于编程,函数可以在文件中的任何地方出现,编译器会找到它们,所以我没有考虑这种可能性。谢谢! void printH

在使用该函数之前,必须先定义它


将printHelp移到\u tmain上方。

在调用函数之前必须声明函数。不必定义它,但编译器必须至少在解析函数调用时知道它的存在,这意味着它必须在处理转换单元期间满足它的声明(即
.cpp
文件):


当你在C++中调用函数时,在调用之前,你必须要么:

  • 有一个功能的原型
  • 有整个功能的定义

在你的情况下,两者都没有。

考虑一下这篇帖子:啊,很有意义。我习惯于编程,函数可以在文件中的任何地方出现,编译器会找到它们,所以我没有考虑这种可能性。谢谢!
void printHelp();
#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]";
}
#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;
}