先前写的一个工具 (Qml 宏预处理工具) 就顺便总结一下 if/elif/else/endif 之间的嵌套关系,并整理成表。
从左到右顺序,与之上一个宏定义对比。除去 2 个无效项,共有 14 个有效项。
if | elif | else | endif | |
---|---|---|---|---|
if | 创建子层 | 同层逻辑 | 同层逻辑 | 同层逻辑 |
elif | 创建子层 | 同层逻辑 | 同层逻辑 | 同层逻辑 |
else | 创建子层 | 无效 | 无效 | 同层逻辑 |
endif | 创建分组层 | 上一层逻辑 | 上一层逻辑 | 上一层逻辑 |
示例标注:
#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 上一层逻辑 */