gpt4 book ai didi

c++ - 使用 g++ 编译变量名为 new 的 C 代码时出错

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:23 24 4
gpt4 key购买 nike

我们正在尝试修改一些现有的 C 项目,即我们正在尝试从 C 代码进行一些 C++ 函数调用。我们尝试将编译器从 gcc 更改为 g++,但由于不兼容,出现了几个编译错误。我们正在尝试做的是在不对现有代码做任何更改的情况下,在 C 代码中调用一些 C++ 函数。简单地更改编译器似乎并不能解决问题。因此我们尝试了以下方法:

#include <stdio.h>

extern "C"
{
int func(int new ) {
printf("in new func()\n");
}
}

当我使用命令编译它时

g++ -c hello.c -o hello

我们得到以下错误

hello.c:9: error:expected ‘,’ or ‘...’ before ‘new’.

现在我们知道 new 是 c++ 关键字。如前所述,我们尽量不对现有的 C 代码进行任何修改。有什么建议吗?

这些不是唯一的错误。还有其他与结构声明相关的错误。

attr.c:75: error: expected primary-expression before ‘.’ token

在attr.c中,第75行是

static post_op_attr error_attr = {.attributes_follow = FALSE };

问题是代码中还有其他 C 风格的结构声明和初始化,所以即使我们重命名变量名,我们仍然需要修改 C 程序的其他部分。因此,我们正在寻找一种在不修改现有 C 代码的情况下向 C 代码添加 C++ 函数调用的方法。

最佳答案

new 是关键字,因此您不能调用变量 new。但即使你可以,我也不确定你为什么会这样做,因为它非常难以阅读。

即使您使用的是 extern "C",您仍在使用 g++ 进行编译,它是 c++ 编译器,它会提示这一点。

基本上 C 代码不能总是在 c++ 中不加修改地运行,因为 c++ 引入了一些关键字。这是您别无选择,只能更改一些现有代码 C 代码以使其编译为 C++ 代码的时代之一。

关于c++ - 使用 g++ 编译变量名为 new 的 C 代码时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20653245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com