先前写的一个工具(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 上一层逻辑 */

Qt君
39 声望22 粉丝