为什么我的程序总是得到未解决的外部问题
Why do I keep getting unresolved externals for my program?
当我尝试在Visual Studio中运行此代码时,我不断得到未解析的外部代码。
大学结构时间分配
创建一个名为Time的结构,该结构包含成员天、小时、分钟、,秒为int。创建一个Time实例并初始化成员。创建一个函数来规范添加值的时间。
例如,在将值添加到小时之后,调用normalize函数,应查看小时数是否>24。如果是,请将days成员加1,并减去24重置hours从当前值。在59岁以上做同样的事情,持续几分钟和几秒钟。
主程序应将值添加到小时、分钟和秒之后,调用normalize函数来正确设置值。
每次更新后输出成员。假设小时使用24小时时钟
#include <iostream>
using namespace std;
Struct time
{
int days = 0;
int hours = 0;
int minutes = 0;
int seconds = 0;
};
void normalize();
int main()
{
int clockRepeating;
for (clockRepeating = 0; clockRepeating < 150; clockRepeating++)
{
normalize();
}
return 0;
}
void normalize(Time &timenormalize)
{
if (timenormalize.days > 31)
timenormalize.days = 1;
if (timenormalizehours > 24)
{
timenormalize.hours = 0;
timenormalize.days++;
}
if (timenormalize.minutes > 59)
{
timenormalize.minutes = 0;
timenormalize.hours++;
}
if (time normalize.seconds > 59)
{
timenormalize.seconds = 0;
timenormalize.minutes++;
cout << timenormalize.days, timenormalize.hours, timenormalize.minutes, timenormalize.seconds;
}
else
timenormalize.seconds++;
cout << timenormalize.days, timenormalize.hours, timenormalize.minutes,timenormalize.seconds;
void normalize();
声明的签名与此文件(void normalize(Time &timenormalize)
)中定义的签名不匹配。
以下是您的代码的固定版本。首先是编译错误:
- 将
Struct
更改为struct
:struct
是关键字,必须小写 - 将
void normalize(..)
中的Time
更改为struct time
:符号区分大小写:未声明Time
,但声明struct time
- 将缺失的
.
添加到if (timenormalizehours)
:if (timenormalize.hours)
- 将
}
添加到文件末尾(可能是复制/粘贴错误)
然后链接器错误undefined reference to 'normalize'
:
- 将函数声明
void normalize()
更改为void normalize(struct time &)
:您声明不带参数的normalize
函数,但用一个参数定义
最后介绍一下编译错误:
- 将
normalize();
调用更改为normalize( mytime );
,因为它需要参数 - 并声明要传递的局部变量CCD_ 21作为参数
#include <iostream>
using namespace std;
struct time
{
int days = 0;
int hours = 0;
int minutes = 0;
int seconds = 0;
};
void normalize(struct time &);
int main()
{
int clockRepeating;
struct time mytime;
for (clockRepeating = 0; clockRepeating < 150; clockRepeating++)
{
normalize( mytime );
}
return 0;
}
void normalize(struct time &timenormalize)
{
if (timenormalize.days > 31)
timenormalize.days = 1;
if (timenormalize.hours > 24)
{
timenormalize.hours = 0;
timenormalize.days++;
}
if (timenormalize.minutes > 59)
{
timenormalize.minutes = 0;
timenormalize.hours++;
}
if (timenormalize.seconds > 59)
{
timenormalize.seconds = 0;
timenormalize.minutes++;
cout << timenormalize.days, timenormalize.hours, timenormalize.minutes, timenormalize.seconds;
}
else
timenormalize.seconds++;
cout << timenormalize.days, timenormalize.hours, timenormalize.minutes,timenormalize.seconds;
}
它打印了一系列0
。现在由您在struct time mytime
中设置一些值。我希望这能有所帮助!
相关文章:
- 节俭并发:未解决的外部问题
- 未解决的外部链接问题
- Visual Studio 2017 中的 QtMetaObject 未解决的外部错误
- 在Embarcadero C++ Builder中生成的DLL未解决的外部链接错误
- 解释未解决的外部C++
- 矛盾的未解决的外部符号+未使用的库与VS2017和FFMPEG 4
- 函数路径追加上未解决的外部符号错误
- Lapack函数DGTSV通过C /Visual Studio提供未解决的外部符号
- 运算符过载上未解决的外部符号
- qfilesystemwatcher未解决的外部
- C 未解决的外部符号(公共静态INT)
- MIDL COM库中未解决的外部符号
- 未解决的外部符号sf ::带有SFML的时间
- C++编译错误LNK2019:未解决的外部符号错误
- VTK / ITK/ QT - 未解决的外部符号错误 (LNK2001)
- 未解决的外部包括AUX_KLIB内核库
- 单一实例对象的未解决外部符号链接错误
- 导出类静态常量的未解决外部符号链接错误(仅限某些项目)
- C++非常简单的未解决外部
- 如何纠正不一致的未解决外部错误