QT学习笔记-C/C++的代码折叠#pragma region以及消除[-Wunknown-pragmas]构建告警

QT中C/C++代码实现折叠

作为一个从C#过度到C/C++的老码农,总是期望C#的一些优点同样能够从QT的C/C++中能够实现。本文就说一下代码折叠,个人认为代码折叠应该算是编码规范的一个基本要求,合理的折叠代码可以增强代码的可读性和可维护性。C#中实现代码折叠很方便,可以用#region … #endregion,如下:

 #region 字段定义

private static readonly string CONFIGFILELOCK = "CONFIGFILELOCK";
private static readonly string APPSETTINGS = "AppSettings";
private static readonly string PROSETTINGS = "ProSettings";
private static IConfigurationRoot configurationRoot = null;

#endregion

那么QT的C/C++中是否有类似的功能?答案是肯定的,经过查阅,可以通过#pragma region …{ … #pragma endregion},如下:

#include "dataprocessor.h"

namespace Wongoing_Basic
{
    #pragma region 构造方法 {

    DataProcessor::DataProcessor()
    {

    }

    #pragma endregion 构造方法}

    #pragma region 静态方法 {
	
    /**
     * @brief formatHexStr 格式化16进制字符串,使每2个字符中间加1个空格
     * @param hexStr    16进制字符串
     * @return          返回格式化后的16进制字符串
     */
    QString DataProcessor::formatHexStr(QString hexStr)
    {
        int len = hexStr.length();
        if (len % 2 == 0 && len > 2)
        {
            for(int i = len - 2; i > 0; i -=2)
            {
                hexStr.insert(i, QChar(' '));
            }
        }
        return hexStr;
    }

    #pragma endregion}
}

折叠效果如下图:
在这里插入图片描述

消除[-Wunknown-pragmas]构建告警

虽然通过#pragma region在QT的C/C++编码中实现了代码的折叠效果,但是在构建的时候会出现[-Wunknown-pragmas]警告,而且是代码中用到了多少#pragma region就会出现多少个警告,如下图:
在这里插入图片描述
随着代码的增多,会生成满屏的警告,而这些警告对我们调试代码毫无意义,而且影响查找有效的警告信息。有没有办法取消这个警告信息呢,答案是肯定的,我们可以在qt的pro工程文件中增加一下内容实现:

# 禁用-Wunknown-pragmas报警
CONFIG += warn_off
QMAKE_CXXFLAGS += -Wall
QMAKE_CXXFLAGS += -Wno-unknown-pragmas

由于默认qt是开启显示所有告警信息的,因此先通过CONFIG+=warn_off把qt自己的告警功能关闭,然后把QMAKE_CXXFLAGS += -Wno-unknown-pragmas加到QMAKE_CXXFLAGS += -Wall后面,不能放到前面,否则不会生效。

如下:
在这里插入图片描述
重新构建如下图:
在这里插入图片描述

更多推荐