簡體   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