解决QT的宏Q_OS_WIN和Q_OS_LINUX不生效

qt平台的Q_OS_WIN、Q_OS_LINUX等宏,是在qt相关的头文件中定义的。如果使用这个宏时,没有在宏的上面引用Qt的头文件,就会导致宏实际没定义。例如文件如下:

#ifndef TEST_H
#define TEST_H

//只有引入了qt头文件,Q_OS_*才生效。引入头文件被注释,所以Q_OS_WIN和Q_OS_LINUX都没有生效
// #include <QObject>

#ifdef Q_OS_WIN
#include <windows.h>
#endif

#ifdef Q_OS_LINUX
#include <unistd.h>
#endif

...

解决方法:在项目的.pro文件,添加:

#windows平台宏
win32:  DEFINES += PLATFORM_WIN
#linux平台宏
unix:  DEFINES += PLATFORM_LINUX

使用语句改为:

#ifdef PLATFORM_WIN
#include <windows.h>
#endif
#ifdef PLATFORM_LINUX
#include <unistd.h>
#endif

posted on 2025-02-19 11:43  平ping  阅读(358)  评论(0)    收藏  举报