繁体   English   中英

在C ++中使用(丑陋的)C代码和外部“ C”

[英]Using (ugly) C code in C++ with extern “C”

我在编写难看的旧C代码时遇到了一些问题。 我想使用C ++编译器并使用部分旧代码。

头文件

extern "C"{
int header();
}

头文件

#include "header.h"
int header(){
const int i=20;
int *ptr = &i;
}

这是使用带有警告的gcc(4.9.3)进行编译的(没有extern“ C”),但是在g ++中存在错误:“从'const int *'到'int *'的无效转换[-fpermissive]”

我对这段代码不是直接感兴趣,但是想知道是否有办法用C ++编译器来编译任何有效的C代码? (这只是一个示例,它在C中“起作用”,但在C ++中不起作用,因为真正的问题是使用gcc而不是g ++进行编译)

您有两种选择:

  1. 修复所有无效的C ++错误,或者
  2. 用gcc编译C文件,并将它们与C ++文件链接

extern "C"仅使C ++编译器在调用函数时使用C函数名。 如果选择使用C ++编译器编译这些函数,则不会使这些函数实际使用C规则进行编译。

暂无
暂无

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

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