【发布时间】:2020-06-05 19:52:01
【问题描述】:
我知道这里有类似的问题,但我找不到答案。我相信我在 Windows 10 GNU 编译器上使用 code::blocks。我在一个项目中有三个文件,(我正在尝试制作一个二进制到十进制转换器,仍然是初学者,所以代码也可以接受建议,)源文件夹中的 main.cpp 和 functions.cpp,和头文件中的functions.h。我不知道如何正确链接它们,我一直在尝试的是: 在 main.cpp 中,
#include <iostream>
#include "functions.h"
using namespace std;
int main()
{
long long number_In_Binary;
cout << "Please enter a binary number: ";
cin >> number_In_Binary;
cout << number_In_Binary << " in decimal is " <<
binaryToBaseTen(number_In_Binary) << endl;
return 0;
}
在functions.cpp中,
#include <iostream>
#include <cmath>
#include "functions.h"
using namespace std;
int binaryToBaseTen(long long binaryNum){
int baseTen = 0;
int iterations = 0;
while (binaryNum > 0){
int binaryDigit = binaryNum % 10;
if (binaryDigit == 1){
baseTen += pow(2.0, iterations);
};
iterations ++;
binaryNum /= 10;
};
return baseTen;
};
和functions.h,
#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
using namespace std;
int binaryToBaseTen(long long binaryNum);
#endif // FUNCTIONS_H_INCLUDED
再一次,代码很糟糕,因为我还在学习绳索,但只有一个函数,所以在头文件中链接似乎并不难。如果我只是用“#include”functions.cpp“”替换main.cpp的“#include”functions.h“”,但我想学习使用头文件。上面的代码给我的错误是
"对'binaryToBaseTen(long long)'的未定义引用。
有什么建议吗?
【问题讨论】:
-
请不要将 HTML/CSS/JS sn-ps 用于 C++ 问题(或除 HTML/CSS/JS 之外的任何其他问题)。
-
我认为问题是
functions.cpp不是您的项目的一部分,但我不使用 Code::Blocks 所以我对 IDE 无能为力。是否有“将文件添加到项目”菜单项或类似菜单项? -
假设您在 Code::Blocks 中打开了所有这些文件是否正确?如果您右键单击“functions.cpp”选项卡,是否有“将文件添加到活动项目”选项? “从项目选项中删除文件”?如果您都没有看到,我想
File菜单中有关项目的选项(例如“将项目另存为”)处于非活动状态? -
另外,您介意我将您的代码精简为一个更简单的示例吗?那里的噪音超出了必要的范围(但对于第一次尝试来说还不错)。
-
是的,修剪它很酷。我只是想了解完整的上下文,以防问题不是我想的那样。此外,所有文件都在同一个项目中打开。感谢您的帮助。
标签: c++ codeblocks header-files