0

我试图弄清楚为什么VS2012不显示functions.cpp @ main.cpp中的函数multi。为了让它显示在 main.cpp 我必须输入int multi(); 在 main.cpp 中。

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

第二个是没有。代码在其中 2 种情况下运行良好,但是当我想导航到multimain.cpp 文件中的函数时,如果我不输入int multi();@main.cpp就无法做到

有人可以解释一下我做错了什么吗?

谢谢你。

示例图 1

在此处输入图像描述

示例图 2

在此处输入图像描述

这是我的代码

主文件

#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;
}

头文件.h

#ifndef _HEADER_
#define _HEADER_

#include <iostream>

int randomNumber = 4;
int multi ();

#endif

函数.cpp

#ifndef _HEADER_
#define _HEADER_

#include <iostream>

using namespace std;

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

3 回答 3

0

这是因为该下拉列表仅显示您在当前文件中声明/定义的项目的名称。这是预期的行为,因为它的目的是在当前文件中导航,并且显示其他文件中的项目名称会将您带到不同的文件(此外,它会向您显示 iostream 之类的标头中的内容,您并不真正感兴趣)。

IntelliSense 的其他功能确实向您展示了“多”功能,例如键入“::”:

在此处输入图像描述

于 2013-03-05T03:10:26.110 回答
-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

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

于 2013-03-05T02:44:50.253 回答
-1

包括警卫,这些#ifndef _HEADER_, #define _HEADER_, #endif行在正常情况下不属于 cpp 文件。您应该将它们从functions.cpp.

它可能不会在小程序中引起您的问题,但是对于名称header.h来说_HEADER_是不好的选择。不应使用下划线后跟大写字母。更多信息:在 C++ 标识符中使用下划线的规则是什么?

于 2013-03-05T02:45:17.310 回答