我正在重用 c 项目中的一些结构。该项目使用带有某些类型定义的自动/预包含 header 。这意味着没有调用:
#include "architecture.h"
在相关的源文件中。
我正在尝试通过从 qt pri 文件定义类型来解决这个问题:
DEFINES += int8_t="\"signed char\""
DEFINES += uint8_t="\"unsigned char\""
DEFINES += int16_t="\"signed int\""
DEFINES += uint16_t="\"unsigned int\""
DEFINES += int32_t="\"signed long int\""
DEFINES += uint32_t="\"unsigned long int\""
我收到编译器错误“重复签名”、“一个声明中有多种类型”、...
在 typedef vs define 中有一些关于类型和定义的内容.
是否有更好的方法来使用自动包含来解决这种情况? 如何解决这个问题?
最佳答案
使用 DEFINES +- xyz_t="...."
与 qt 的类型定义冲突包括系统头文件,如 <cstdint>
由 Qt 对象使用。
gcc 兼容编译器(gcc,MinGW,clang)有选项 -include <file>
强制预包含。
在 qmake 中,这可以被 QMAKE_CXXFLAGS 使用:
QMAKE_CXXFLAGS += -include path/to/file.h
在包含的 file.h
中我们可以包含其他系统类型定义 header ,例如:
#include <stdbool.h>
#include <cstddef>
通过这种方式可以很好且安全地定义类型。
关于c++ - 如何从 qmake 定义类型?预包含头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43228541/