我试图弄清楚为什么VS2012没有显示来自functions.cpp @ main.cpp的函数 multi 。为了使它显示在main.cpp中,我必须在main.cpp中键入 int multi(); 。
这是2个屏幕截图,第一个屏幕截图是在main.cpp中的int multi();
第二个没有。代码在其中两种情况下运行良好,但是当我想导航到main.cpp文件中的multi
函数时,如果我不键入int multi();
@ main.cpp,我就无法执行此操作
有人可以解释一下我做错了吗?
谢谢。
示例图片1
示例图片2
这是我的代码
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 :(得分:0)
这是因为该下拉列表仅显示您在当前文件中声明/定义的项目的名称。这是预期的行为,因为它的目的是在当前文件中导航,并显示其他文件中的项目名称将带您到不同的文件(加上它会显示像iostream这样你不感兴趣的标题中的东西)。
IntelliSense的其他功能会显示“多”功能,例如输入“::”:
答案 1 :(得分:-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
并且通过这种方式,您不需要声明该功能。 你试图做的是创建一个班级&#39;档案? 更好的是它只需点击项目上的右键&gt;添加&gt;类 你可以看到它是如何工作的。
答案 2 :(得分:-1)
包括警卫,#ifndef _HEADER_, #define _HEADER_, #endif
行在正常情况下不属于cpp文件。您应该从functions.cpp
删除它们。
它可能不会导致您在小型程序中出现问题,但header.h
和_HEADER_
对于名称选择不当。你不应该使用下划线后跟大写字母。更多信息:What are the rules about using an underscore in a C++ identifier?