1樓:
有人說這種寫法是錯的,其實並不是,想明白這個問題先從#include入手,#include巨集其實是從外部檔案讀取文字,替換掉#include這一行,本質依然是文字替換.
那究竟 include cpp 和 include h 有什麼區別,答案是沒有實質性的區別.這個其實是一種習慣,我們習慣將宣告寫入標頭檔案,實現寫入原始檔.不管怎麼寫,必須得保證最後鏈結既不缺少符號定義也不能出現重定義.
只能能保證這一點怎麼寫都無妨.
比如乙個 main.cpp test1.cpp test2.
cpp 1,2裡各有乙個main入口可以在main.cpp裡#include test1.cpp也可以test2.
cpp 但不能重複#include這兩個
2樓:
Mega Compile,或稱Unity Compile、Bulk Compile,是一種『巨量』編譯方式。常用於大型專案的完整重新構建,因為可以減少各個c/cpp檔案中相同的#include的展開,減少磁碟IO。但是不適合原始檔經常小範圍修改的開發模式。
相關參考:
The Magic of Unity Buildsc++ - #include all .cpp files into a single compilation unit?
3樓:汪淘
這種用法,曾經用來提高編譯速度的。
後來慢慢的變成了專門的預編譯標頭檔案了,不過在一些比較特殊的檔案組織情況下,還是有不少人使用的
4樓:lyyfer
語法上,副檔名並沒有什麼特殊的地方,它只是檔名字串的一部分,並不具有什麼特殊的地位。不管你include啥副檔名都可以,你就是#include 都可以。
不過習慣上cpp一般是做函式體實現的,編譯的時候每個cpp單獨編譯為乙個目標檔案。但是如果帶模板,單獨編譯cpp是不可行的,因為模板引數還沒有例項化。所以這種情況可以把cpp實現include到頭檔案裡面。
使用標頭檔案的時候,cpp也就跟著被include了,就可以在使用的地方例項化模板了。
5樓:
以前微軟的Microsoft Visual C++ CRT 也是這種玩法,根據不同的巨集生成MB 和Unicode執行時。
/***
*ManagedMain.cpp - Initialization for Windows EXE using CRT DLL and managed entry point**
*Purpose:
* point int __clrcall main(array^).
* It calls the user's main routine after performing C Run-Time Library initialization.
*#define _MANAGED_MAIN
#define WPRFLAG 1
/* Flag used by startup code to indicate wide strings */
#ifndef _UNICODE
#define _UNICODE 1
#endif
/* _UNICODE */
#ifndef UNICODE
#define UNICODE 1
#endif
/* UNICODE */
#undef _MBCS
/* UNICODE not _MBCS */
#include
"mcrtexe.cpp"
C++ include本質上就是插入替換,然後你想怎麼玩就怎麼玩了。
如何看待 有 動詞 這種用法?
很多台灣的或者閩南地區的人喜歡在說普通話的時候這麼用 作為福建人我也有點不理解,閩方言裡 有 發作 在說方言的時候其實順嘴的,而且大量使用。而講普通話的時候,動詞前面加個 y u 不太順口也彆扭 所以這個可以叫普通話閩語化?狗頭 應該和英語的關係不大,我10後 1910s 的奶奶在世的時候也經常這麼...
se rendre compte que用法是什麼?
alex6666 加上也行,不過經常這種連線的詞太多了就不都放了。口語也會用這個,je me suis rendu compte que je devrais bosser plus 比如 毀廚房能手 Que後面跟的內容裡包括了時態變位了的動詞。贊同另乙個回答,和英語That用法差不離。最常用的方式...
用 邁 代表 km h (千公尺每小時)這種錯誤用法是怎樣形成的?
左三三 準確點說,應該叫 公里 邁 碼每小時 我們口頭上一般把 每小時 略去了。邁 是英製英里mile的音譯,1 mile 1609M 約 1.6KM,100邁就是160KM,在速度表上就是160KM H,比如某人說他在路上開到過180 邁 換算為公里應該是180 1.6 288KM,這個速度是在開...