【发布时间】:2018-06-10 23:59:15
【问题描述】:
我正在尝试将 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 的值。成员不会被转移到函数之外(这将是想法)。
任何建议如何解决这个问题?
【问题讨论】:
-
你用的是什么编译器?
-
GCC(用于微处理器)
-
你有没有试过找到
tmElements_t &tm代表什么?然后,您可以找出类似的 C 概念以使其工作。提示:en.cppreference.com/w/cpp/language/reference -
C 没有引用; C++ 可以。您必须将引用转换为指针,然后也更改对函数的调用。当然在函数中使用适当的指针表示法。
-
@user2921077:不,您可以编译一个 C++ 翻译单元和另一个 C 翻译单元并将它们链接在一起。您将在您的 C++ 代码中使用
extern "C"来声明您的 C 函数。这很常见(大多数 C++ 标准库实现都是以这种方式构建的)。更多信息请参见this answer