总结if/elif/else/endif宏之间的嵌套关系

先前写的一个工具(Qml宏预处理工具)就顺便总结一下if/elif/else/endif之间的嵌套关系,并整理成表。

  从左到右顺序,与之上一个宏定义对比。除去2个无效项,共有14个有效项。

if elif else endif
if 创建子层 同层逻辑 同层逻辑 同层逻辑
elif 创建子层 同层逻辑 同层逻辑 同层逻辑
else 创建子层 无效 无效 同层逻辑
endif 创建分组层 上一层逻辑 上一层逻辑 上一层逻辑

  示例标注:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#if 
#if /* if -> if 创建子层 */
#elif /* if -> elif 同层逻辑 */
#else
#endif
#elif
#if /* elif - > if 创建子层 */
#elif
#elif
#endif
#else
#if /* else - > if 创建子层 */
#else
#endif
#endif

#if /* endif -> if 创建分组层 */
#if
#if
#if
#endif
#elif /* endif -> elif 上一层逻辑 */
#else
#endif
#else /* endif -> else 上一层逻辑 */
#endif
#endif /* endif -> endif 上一层逻辑 */