为什么我的程序总是得到未解决的外部问题

Why do I keep getting unresolved externals for my program?

本文关键字:未解决 外部 问题 我的 程序 为什么      更新时间:2023-10-16

当我尝试在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更改为structstruct是关键字,必须小写
  • 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中设置一些值。我希望这能有所帮助!