1
我遇到了一些難以編寫的舊C代碼的問題。 我想使用C++編譯器並使用此舊代碼的一部分。在C++中使用(醜)C代碼與extern「C」
header.h
extern "C"{
int header();
}
header.c
#include "header.h"
int header(){
const int i=20;
int *ptr = &i;
}
這是使用gcc(4.9.3)配有一個警告(沒有外部的 「C」)編譯但在G ++有錯誤: 「從'const int *'無效轉換爲'int *'[-fpermissive]」
我對此代碼沒有直接的興趣,但想知道是否有辦法讓任何工作C cod用C++編譯器編譯? (這只是一個例子,C,但不是在C什麼是「工作」 ++像真正的問題是用gcc編譯但不使用g ++)
「如果有一種方法可以使用C++編譯器編譯任何可用的C代碼?」不,儘管宣佈的目標是讓C++成爲「更好的C」,但兩者結束了相當不同的語言。 – dasblinkenlight
儘量不要讓它變得更難。只要C++編譯器用'extern「C」看到C函數的聲明,那麼你可以繼續用C編譯器編譯它,連接器也會同樣開心。 –
這是兩種語言中非常糟糕的代碼。 – Olaf