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++ åèæå >é¢å¤çå¨ > æ¡ä»¶å å«
æ¡ä»¶å å«
é¢å¤ç卿¯æææ¡ä»¶å°ç¼è¯æºæä»¶çæäºé¨åãè¿ä¸è¡ä¸ºç± #ifã#elseã#elifã#ifdefã#ifndef ä¸ #endif æä»¤ææ§å¶ã
è¯æ³
#if 表达å¼
|
|||||||||
#ifdef æ è¯ç¬¦
|
|||||||||
#ifndef æ è¯ç¬¦
|
|||||||||
#elif 表达å¼
|
|||||||||
#else
|
|||||||||
#endif
|
|||||||||
è§£é
æ¡ä»¶ç¼è¯é¢å¤çåç± #ifã#ifdef æ #ifndef æä»¤å¼å§ï¼å¹¶å¯éå°å
å«ä»»æå¤ä¸ª #elif æä»¤ï¼æ¥ä¸æ¥æ¯è³å¤ä¸ä¸ªå¯éç #else æä»¤ï¼å¹¶ä»¥ #endif æä»¤ç»æãåµå¥çæ¡ä»¶ç¼è¯é¢å¤çåä¼è¢«åç¬å¤çã
å个 #ifã#elifã#elseã#ifdef å #ifndef æä»¤ææ§å¶ç代ç åå¨ç¬¬ä¸ä¸ªä¸å±äºå
é¨åµå¥çæ¡ä»¶ç¼è¯é¢å¤çåç #elifã#else æ #endif æä»¤å¤ç»æã
#ifã#ifdef å #ifndef æä»¤æµè¯å
¶ææå®çæ¡ä»¶ï¼è§ä¸æï¼ï¼å¦ææ¡ä»¶æ±å¼ä¸ºçï¼åç¼è¯å
¶æ§å¶ç代ç åãæ¤æ¶åç»ç #else å #elif æä»¤å°è¢«å¿½ç¥ãå¦åï¼å¦æææå®çæ¡ä»¶æ±å¼ä¸ºåï¼åå°è·³è¿å
¶ææ§å¶ç代ç åï¼ç¶åå¤çåç»ç #else æ #elif æä»¤ï¼å¦æåå¨ï¼ãåä¸ç§æ
åµä¸ï¼#else æä»¤ææ§å¶ç代ç åå°ä¼æ æ¡ä»¶å°è¿è¡ç¼è¯ãåä¸ç§æ
åµä¸ï¼#elif æä»¤æç
§ä¸ #if æä»¤ç¸åçæ¹å¼æ§è¡ï¼å³æµè¯æ¡ä»¶æ¯å¦æ»¡è¶³ï¼å¹¶æ ¹æ®å
¶ç»æå³å®ç¼è¯æè·³è¿å
¶ææ§å¶ç代ç åï¼å¹¶å¨åä¸ç§æ
åµä¸ç»§ç»å¤çåç»ç #elif å #else æä»¤ãæ¡ä»¶ç¼è¯é¢å¤çå以 #endif æä»¤ç»æã
æ¡ä»¶çæ±å¼
#if, #elif
è¡¨è¾¾å¼ æ¯å¸¸é表达å¼ã
表达å¼å¯å«æå½¢å¦âdefined æ è¯ç¬¦âæâdefined (æ è¯ç¬¦)âçä¸å
è¿ç®ç¬¦ã彿¤ æ è¯ç¬¦ å·²ç»è¢«å®ä¹ä¸ºå®åï¼æè
æ¤ æ è¯ç¬¦ 为 __has_include (C++17 èµ·)æ¶ç»æä¸º 1ï¼å¦åç»æä¸º â0âã
å¨è¿è¡ææå®å±å¼å defined å __has_include (C++17 èµ·) 表达å¼çæ±å¼åï¼ä»»ä½éå¸å°åé¢éçæ è¯ç¬¦é½è¢«æ¿æ¢ææ°å â0âï¼è¿å
å«è¯æ³ä¸ä¸ºå
³é®åçæ è¯ç¬¦ï¼ä½ä¸å
æ¬å¦ and ä¹ç±»ç代ç¨è®°å·ï¼ã
å½ è¡¨è¾¾å¼ æ±å¼ä¸ºéé¶å¼æ¶ï¼å å«å ¶ææ§å¶ç代ç åï¼å¦åè·³è¿è¯¥ä»£ç åã
|
注ï¼â |
(C++14 å) |
#ifdef, #ifndef
æ£æ¥æ è¯ç¬¦æ¯å¦è¢«å®ä¹ä¸ºå®åã
â#ifdef æ è¯ç¬¦âä¸â#if defined æ è¯ç¬¦âå®è´¨ä¸çä»·ã
â#ifndef æ è¯ç¬¦âä¸â#if !defined æ è¯ç¬¦âå®è´¨ä¸çä»·ã
示ä¾
#define ABCD 2 #include <iostream>  int main() {  #ifdef ABCD std::cout << "1: yes\n"; #else std::cout << "1: no\n"; #endif  #ifndef ABCD std::cout << "2: no1\n"; #elif ABCD == 2 std::cout << "2: yes\n"; #else std::cout << "2: no2\n"; #endif  #if !defined(DCBA) && (ABCD < 2*4-3) std::cout << "3: yes\n"; #endif }
è¾åºï¼
1: yes 2: yes 3: yes
ç¼ºé·æ¥å
ä¸åæ´æ¹è¡ä¸ºçç¼ºé·æ¥å追溯å°åºç¨äºä»¥ååºçç C++ æ åã
| DR | åºç¨äº | åºçæ¶çè¡ä¸º | æ£ç¡®è¡ä¸º |
|---|---|---|---|
| CWG 1955 | C++14 | è¦æ±å¤±è´¥ç #elif ä¸ç表达å¼åæ³ | è·³è¿å¤±è´¥ç elif |