繁体   English   中英

为什么我的程序始终无法获取外部信息?

[英]Why do I keep getting unresolved externals for my program?

当我尝试在Visual Studio中运行此代码时,我总是遇到无法解决的外部问题。

大学的结构时间分配

创建一个名为Time的结构,其成员天,小时,分钟和秒为整数。 创建一个Time实例并初始化成员。 创建一个函数以标准化向其添加值的时间。

例如,在将值添加到小时后,调用标准化函数,该函数应查看小时是否大于24。如果是,则将1加到day成员,并通过从当前值中减去24来重置小时。 在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(); 与该文件中定义的签名不匹配( void normalize(Time &timenormalize) )。

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

  • Struct更改为structstruct是一个关键字,必须为小写;
  • 改变Time ,以struct timevoid normalize(..)符号是区分大小写的: Time未声明的,但struct time是;
  • 补充缺少. if (timenormalizehours)if (timenormalize.hours)
  • 在文件末尾添加了} (可能是复制/粘贴错误)。

然后链接器错误undefined reference to 'normalize'

  • 将函数声明void normalize()更改为void normalize(struct time &) :您声明不带参数的normalize函数,但使用一个参数对其进行定义

最后,这引入了编译错误:

  • 更改normalize(); 调用normalize( mytime ); 因为它需要一个参数
  • 并声明要传递的局部变量struct mytime作为参数。
#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一些值。 我希望这有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM