C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- æºæä»¶å å«
- æ¡ä»¶å å«
- ææ¬æ¿æ¢å®
- é误æä»¤
- å®ç°å®ä¹çè¡ä¸ºæ§å¶
- æä»¶ååè¡ä¿¡æ¯
- 注é
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >é¢å¤çå¨ > æºæä»¶å å«
æºæä»¶å å«
å°å ¶ä»æºæä»¶å å«å°å½åæºæä»¶ä¸ç´§éæä»¤ä¹åçä¸è¡ã
è¯æ³
#include <æä»¶å>
|
(1) | ||||||||
#include "æä»¶å"
|
(2) | ||||||||
__has_include ( " æä»¶å " )__has_include ( < æä»¶å > )
|
(3) | (C++17 èµ·) | |||||||
容许任ä½é¢å¤çè®°å·ï¼å®å¸¸éæè¡¨è¾¾å¼ï¼ä½ä¸ºç» #include å __has_include (C++17 èµ·)çå®åï¼åªè¦å®ä»¬å±å¼æ < > æ " " æç¯ç»çå符åºåå³å¯ã
è§£é
#include æä»¤çææå®åï¼åç¨åºéè¯æãæ³¨æ
å
å«ä¸ä¸ªæä»¶æ¶ï¼å®å°ç»è¿ç¿»è¯é¶æ®µ 1-4 çå¤çï¼è¿å¯è½éå½å°å
å«åµå¥ #include æä»¤çå±å¼ã为é¿å
ï¼å¯è½ä¼ éæ§å°ï¼éå¤å
å«ç¸åæä»¶ï¼åç±æä»¶å
å«èªèº«é æçæ ééå½ï¼å¸¸ä½¿ç¨å¤´æä»¶é²æ¤ï¼æ´ä¸ªå¤´æä»¶è¢«å
è£
å¨ä¸åç»æä¸
#ifndef FOO_H_INCLUDED /* ä»»ä½å¯ä¸å°æ å°å°æä»¶çåç§° */ #define FOO_H_INCLUDED // æä»¶å 容卿¤ #endif
许å¤ç¼è¯å¨äº¦å®ç°æç±»ä¼¼ææçéæ å ç¼è¯é项ï¼pragmaï¼ #pragma onceï¼è¥å·²å å«äºå䏿件ï¼è¿é以ç¹å®äº OS çæ¹å¼ç¡®å®æä»¶ç身份ï¼ï¼åç¦æ¢å¤ç该æä»¶ã
1 ç __has_include ç»æä»
表æå卿æå®åç§°çå¤´ææºæä»¶ãå®å¹¶ä¸æå³çå
å«è¯¥å¤´ææºæä»¶æ¶ä¸ä¼å¯¼è´éè¯¯ï¼æå
¶ä¼å
å«ä»»ä½ææçå
容ãä¾å¦å¨åæ¶æ¯æ C++14 å C++17 模å¼ï¼å¹¶å¨å
¶ C++14 模å¼ä½ä¸ºä¸é¡¹éµä»æ åçæ©å±èæä¾ __has_includeï¼ç C++ å®ç°ä¸ï¼__has_include(<optional>) å¨ C++14 模å¼ä¸å¯ä¸º 1ï¼ä½å®é
ä¸ #include <optional> å¯è½å¯¼è´é误ã
示ä¾
#if __has_include(<optional>) # include <optional> # define have_optional 1 namespace guard { using std::optional; } #elif __has_include(<experimental/optional>) # include <experimental/optional> # define have_optional 1 # define experimental_optional 1 namespace guard { using std::experimental::optional; } #else # define have_optional 0 #endif  #include <iostream>  int main() { if (have_optional) std::cout << "<optional> is present.\n";  int x = 42; #if have_optional == 1 guard::optional<int> i = x; #else int* i = &x; #endif std::cout << "i = " << *i << '\n'; }
å¯è½çè¾åºï¼
<optional> is present. i = 42
åé
| cpp/header | C++ æ ååºå¤´æä»¶å表 |