我使用系統工作臺4 stm32(eclipse)。 那裏我有一個混合的C/C++項目,其中C++文件包括C(從來沒有問題)和C文件包括C++文件(很大的麻煩)。eclipse c/C++項目,GCC編譯G ++代碼
我明確地總是爲C++文件定義.cpp/.hpp,爲c文件定義.c/.hpp。另外,如果__cpluplus extern「C」,則任何C文件都已聲明。
但是一個GCC編譯,然後導致一個C++頭(.hpp),然後將編譯與GCC,並告訴我的「未知類型」......但據我所知它應該發生自它的聲明C++(。 HPP)
我怎麼能在這個項目工作:
選項A: 莫名其妙地刪除項目的GCC編譯器和G ++只
問題A1工作:你是怎麼從刪除編譯項目? 問題A2:G ++是相當多挑剔,不會編譯所有,因爲我使用FreeRTOS操作系統的例子做了很多類型轉換的,我的編譯器doesent像所有
選項B:有 嚴格頂級城鎮體系結構,其中允許C++包含c文件,但不能反過來(也不是一個好的選擇,因爲我使用需要做回調/ isr處理的stm32 hal層(c然後我的代碼是C++)
NO OPTION : 使用gcc只有
你怎麼解決這樣的事情? 非常感謝 要去瘋狂在這個:-)
任何包含'#include'sa C++頭文件的源文件*不是C源文件*, 它是一個C++源文件。 (除非C++頭, 和* it *包含的任何文件恰巧只包含C代碼,即它不是真正的C++頭,它實際上是C頭。)所以調用這樣的源文件是沒有意義的'foo.c'。它只能由C++編譯器編譯,因此稱其爲「foo.cpp」。 –
嗨邁克。感謝您的輸入。那麼,基本上,當我有一個嚴格的自頂向下arcitecture(.cpp文件包括.h文件,但.c不允許包括.hpp)我所有的代碼基本上是C++代碼,將完全編譯爲C++? 我不明白,爲什麼我必須在我的eclipse項目中有g ++和gcc編譯器?因爲從構建輸出,gcc用於.c和g ++用於.cpp當我只能使用g ++的所有文件? –