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

  发布于 2023-02-09 15:13

我们正在尝试修改一些现有的C项目,即我们正在尝试从C代码中进行一些C++函数调用.我们尝试将编译器从gcc更改为g ++,但由于不兼容性,存在多个编译错误.我们要做的是在C代码中调用一些C++函数,而不对现有代码进行任何更改.简单地改变编译器似乎没有做到这一点.因此,我们试过以下:

#include 

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:错误:在'.'之前预期的primary-expression 代币

在attr.c,第75行是

static post_op_attr error_attr = {.attributes_follow = FALSE};

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

1 个回答
  • new是一个关键字,因此您无法调用变量new.但即使你可以,我也不确定你为什么会这么做,因为它难以理解.

    即使你正在使用extern "C"你仍然在编译g++c ++编译器,它会抱怨这个.

    基本上C代码不能总是在c ++中保持不变,因为c ++引入了一些关键字.这是其中一个时间,你别无选择,只能更改一些现有的代码C代码,使其编译为c ++代码.

    2023-02-09 15:17 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有