C++到 C 的转换问题

C++ to C Conversion issues

本文关键字:转换 问题 C++      更新时间:2023-10-16

我正在尝试将C++(.cpp文件(的内容复制到 C(.c 文件(代码中,因为我需要转换它。我得到的大多数错误现在都已修复,但还有一个仍然存在。

这是代码 — 我已经删除了所有与问题无关的内容:

/*Prototype*/
void breakTime(time_t time, tmElements_t tm);
/*Creation*/
static tmElements_t tm;
/*Functions*/
void breakTime(time_t timeInput,tmElements_t &tm){
    tm.Second = 10;
}

编译器给了我:

expected ';' , ',' or ')'  before '&' token

我尝试编辑该功能并将&tm替换为 tm.它确实可以编译,但问题是函数内部分配给tm的值。成员不会转移到函数的外部(这就是想法(。

有什么建议如何解决这个问题吗?

&符号在这里用于将tm作为引用,但 C 没有引用。您必须删除指针的引用:

void breakTime(time_t timeInput, tm_Elements_t* tm) {
    tm->Second = 10;
}

您对breakTime的调用也必须转换。你应该有这样的代码:

time_t timeInput;
tm_Elements_t tm;
breakTime(timeInput, tm);

它必须成为:

time_t timeInput;
tm_Elements_t tm;
breakTime(timeInput, &tm);

请注意,此处使用 & 具有不同的含义:它用于获取tm的地址,该地址将作为指向 breakTime 的指针传递。

只需替换为指针:

void breakTime(time_t timeInput, tmElements_t *tm) {
  tm->Second = 10;
}