2013-03-05 98 views
0

我想弄明白为什么VS2012不能显示函数multi from functions.cpp @ main.cpp。为了让它显示在main.cpp中,我必须键入int multi();在main.cpp中的Visual Studio显示函数@ main.cpp

这里的2个截图,第一屏幕截图是在int multi(); main.cpp中

第二个是无。代码在2个案例中运行良好,但是当我想导航到main.cpp文件中的multi函数时,如果我不输入int multi(); @ main.cpp

是否有人可以解释我在做什么错了?

谢谢。

实施例图像1

enter image description here

实施例图像2

enter image description here

这是我的代码

Main.cpp的

#include "Header.h" 
#include <iostream> 

using namespace std; 
int plus(); 

int main() 
{ 

cout << "Eneter a number you want to multiply" << endl; 
cout << multi() <<endl; 
cout << randomNumber << endl; 

system("pause"); 
return 0; 
} 

Header.h

#ifndef _HEADER_ 
#define _HEADER_ 

#include <iostream> 

int randomNumber = 4; 
int multi(); 

#endif 

functions.cpp

#ifndef _HEADER_ 
#define _HEADER_ 

#include <iostream> 

using namespace std; 

int multi() 
{ 
    int x; 
    cin >> x; 
    return(x=x+x); 
} 
#endif 

回答

0

这是因为该下拉列表仅显示您在当前文件中声明/定义的项目的名称。这就是预期的行为,因为它的目的是在当前文件中导航,并显示其他文件中的项目名称会带你到不同的文件(再加上它会显示你的头像iostream,你不是真的感兴趣的东西)。

智能感知的其他功能,你表现出 “多” 的功能,如输入 “::”:

enter image description here

+0

谢谢!如果我理解它是正确的,如果我使用外部文件来声明/定义我的函数,我仍然需要在将要调用/使用这些函数的文件中进行前向声明/定义我的函数。正确? – alentor 2013-03-05 04:03:12

+0

不!你只需要在声明/定义的地方包含标题。顶部的下拉列表不显示它们并不意味着它们不可用。就像我说的,智能感知的其他功能确实显示它们。 – user1610015 2013-03-05 05:03:29

+0

谢谢!你帮助我更多地理解编程语言和工具。谢谢。 – alentor 2013-03-05 06:13:04

-1

您可以用头文件只用了,是这样做的:

#ifndef _HEADER_H 
#define _HEADER_H 

#include <iostream> 
using namespace std; 

int randomNumber = 4; 

int multi() 
{ 
    int x = 1; 
    cin >> x; 
    return(x=x+x); 
} 

#endif 

,并用这种方式,你不需要声明函数。 你试图做的是创建一个'类'文件? 对你更好,它只需点击项目上的右键>添加>类 ,你可以看到它是如何工作的。

-1

在正常情况下,包括警卫,#ifndef _HEADER_, #define _HEADER_, #endif行不属于cpp文件。你应该从functions.cpp中删除它们。

它可能不会导致您在小程序中出现问题,但header.h_HEADER_是名称的不好选择。你不应该使用下划线后跟大写字母。这里更多信息:What are the rules about using an underscore in a C++ identifier?