2011-08-14 545 views
2

編譯器檢查文本文件中源代碼的語法。爲什麼需要使用擴展名.c.cpp來保存它?源文件的擴展名

我在gcc上試過這個,但是它沒有編譯一個擴展名不是.c.cpp的文件!

+0

對不起...錯字...編輯了問題 –

+2

'gcc -xc hello.txt' – pmg

+0

另請參閱:http://stackoverflow.com/questions/172587/what-is-the-difference-between-g -and-GCC/173007#173007 –

回答

3

編譯器不會通過查看文本來猜測文件中代碼的語言 - 您必須告訴它編譯的內容。幾乎每個編譯器都允許將其作爲標誌傳遞,它將從文件擴展名中推斷出它。通過將適當的標誌傳遞給您的編譯器,您可以自由地將.cpp文件編譯爲純C文件,因此無需推斷它。但是,這是一種情況,下面的慣例可以幫助你(減少旗幟傳遞)和其他程序員(從快速ls知道語言)。

4

如果您沒有使用-x選項指定語言,GCC(您將其命名爲您的標籤)會檢查文件擴展名。

如果擴展名未被識別,則該文件被直接傳遞給鏈接器。

1

這不是必要的 - 只是方便。您可以使用任何您想要的擴展名,但使用標準擴展名可以讓編譯器,操作系統和其他程序員輕鬆知道文件包含的內容。

1

編譯器通常使用擴展名來決定文件所包含的語言,因此如果它是.c,它會將該文件視爲包含C源代碼。如果它是.C(注意,大寫),.cc,.cpp等,它會將其視爲C++。根據不同的編譯器,它也可能認識其他擴展(例如,.pas.f.cs等)

0

通常,.c文件包含C和.cpp文件包含C++。

編譯器經常使用擴展名來確定它可以在源文件中找到哪種語言。即使是包含純C但保存爲.cpp擴展名的文件,通常也會被解釋爲C++。儘管大多數情況下,C++是C的超集,但這些語言之間存在細微的差異,因此代碼可能會有所不同。

您可以告訴大多數編譯器將任何文件視爲某種語言。編譯器與編譯器的不同之處在於,GCC使用-x選項。

FWIW,我認爲GCC也接受.cc作爲C++。但這可能已成爲過去。