c++ - 如何从 qmake 定义类型?预包含头文件?

标签 c++ qt typedef qmake

我正在重用 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/

相关文章:

c++ - 这行代码中的 `const char* yes[5]`代表什么?

c++ - 在 C++ 中使用方法更新外部结构

c++ - Qt 5.5 QOpenGLWidget 链接错误未链接任何 openGL 调用

c++ - Qt utf8 编码在 Windows 上失败,但在 Linux 上运行良好

c# - c# 中 typedef 或子类化字符串的替代方法

c++ - C++静态多态性(CRTP)并使用派生类中的typedef

时间:2019-03-14 标签:c++templates: syntax of template-parameter-key

c++ - 调用虚函数时继承类 "invalid pointer error"

c++ - 删除映射c++中其他键值中已经存在的那些值

c++ - 从 JPEG 文件中读取 Exif 缩略图