C++ 为什么我的程序总是有未解决的外部问题?

C++ 为什么我的程序总是有未解决的外部问题?,c++,visual-c++,C++,Visual C++,当我尝试在VisualStudio中运行此代码时,会不断收到未解析的外部代码 为大学安排时间分配 创建一个名为Time的结构,该结构包含成员天、小时、分钟, 秒作为整数。 创建时间实例并初始化成员。 创建一个函数以规范化向其添加值的时间 例如,将值添加到小时后,调用normalize 函数,该函数应查看小时数是否大于24小时。 如果是,则在days成员中添加1,并通过减去24重置小时数 从当前值。 在59分钟和59秒的时间内也这样做 你的主程序应该为小时、分、秒和秒添加值 每次之后,调用norm

当我尝试在VisualStudio中运行此代码时,会不断收到未解析的外部代码

为大学安排时间分配

创建一个名为Time的结构,该结构包含成员天、小时、分钟, 秒作为整数。 创建时间实例并初始化成员。 创建一个函数以规范化向其添加值的时间

例如,将值添加到小时后,调用normalize 函数,该函数应查看小时数是否大于24小时。 如果是,则在days成员中添加1,并通过减去24重置小时数 从当前值。 在59分钟和59秒的时间内也这样做

你的主程序应该为小时、分、秒和秒添加值 每次之后,调用normalize函数以正确设置值

每次更新后输出成员。假设小时使用24小时制 时钟

#包括
使用名称空间std;
结构时间
{
整数天=0;
整小时=0;
整数分钟=0;
整数秒=0;
};
void normalize();
int main()
{
int时钟重复;
用于(clockRepeating=0;clockRepeating<150;clockRepeating++)
{
规范化();
}
返回0;
}
无效规格化(时间和时间规格化)
{
如果(timenormalize.days>31)
timenormalize.days=1;
如果(时间正常化小时数>24)
{
timenormalize.hours=0;
时间标准化。天++;
}
如果(timenormalize.minutes>59)
{
timenormalize.minutes=0;
时间标准化.hours++;
}
如果(时间正常化。秒>59)
{
timenormalize.seconds=0;
时间标准化。分钟++;

cout您为
void normalize();
声明的签名与此文件中定义的签名不匹配(
void normalize(Time&timenormalize)
)。

以下是您的代码的固定版本。首先是编译错误:

  • Struct
    更改为
    Struct
    Struct
    是关键字,必须小写
  • Time
    更改为
    struct Time
    中的
    void normalize(..)
    :符号区分大小写:
    Time
    未声明,但
    struct Time
  • 将缺少的
    添加到
    if(timenormalizehours)
    if(timenormalize.hours)
  • 在文件末尾添加了
    }
    (可能是复制/粘贴错误)
然后链接器错误
未定义对“normalize”的引用

  • 将函数声明
    void normalize()
    更改为
    void normalize(struct time&)
    :声明
    normalize
    函数时不带参数,但使用一个参数定义它
最后,这将导致编译错误:

  • normalize();
    调用更改为
    normalize(mytime);
    ,因为它需要一个参数
  • 并声明一个局部变量
    struct mytime
    作为参数传递
#包括
使用名称空间std;
结构时间
{
整数天=0;
整小时=0;
整数分钟=0;
整数秒=0;
};
void规范化(结构时间&);
int main()
{
int时钟重复;
结构时间mytime;
用于(clockRepeating=0;clockRepeating<150;clockRepeating++)
{
正常化(mytime);
}
返回0;
}
无效规格化(结构时间和时间规格化)
{
如果(timenormalize.days>31)
timenormalize.days=1;
如果(timenormalize.hours>24)
{
timenormalize.hours=0;
时间标准化。天++;
}
如果(timenormalize.minutes>59)
{
timenormalize.minutes=0;
时间标准化.hours++;
}
如果(时间规格化.seconds>59)
{
timenormalize.seconds=0;
时间标准化。分钟++;

您得到的确切错误消息是什么?
#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;
#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;
}