UE-c++ className.generated.h报错:generated header must be included last in a list of includes
一. 问题
为什么不把#include xx.generated.h
放最后会导致error "the .generated.h file should always be the last #include in a header"
?
二. 求助
三. 分析
大佬简短凝练的回答道:因为好识别!
不是其他奇奇怪怪的原因
然后我们想一下,识别 这个词,谁识别,识别谁,为什么会好识别?识别后来做啥?结合其包含的反射机制,可以引出很深的话题,这里不做探讨。
四. 总结
为了反射机制运行的方便。
五. 新的认识
UE的反射机制是根据宏生成对应的代码。
既然是C++,那么生成的代码自然是.h.cpp的组合。假设我们为类A生成了A.generated.h和A.generated.cpp(UE命名习惯)。如果类A的宏标记生成的代码想跟A.generated.h里我们生成的代码来个里应外合的话,此时A.h一般都需要include"A.generated.h"。
另一方面,用户对背后的代码生成应该是保持最小惊讶的,用户写下了A.h,他在使用的时候自然也会想include “A.h”,所以这个时候我们的A.generated.h就得找个方式一起安插进来,最方便的方式莫过于直接让“A.h” include “A.generated.h”了。那既然每个需要分析的文件最后都会include这么一个*.generated.h,那自然就可以把它本身就当作一种标记了。
UE目前的方案是每个要分析的文件加上该include并且规定只能当作最后一个include,放最后也是因为他担心会有各种宏定义顺序产生的问题。
UE-c++ className.generated.h报错:generated header must be included last in a list of includes相关推荐
- OBS---环境配置之#include D3DX10.h报错
一.先贴错误 因为这个笔记主要记录我如何整好这个OBS源码环境的,给需要的童鞋一个参考 1.1.#include <D3DX10.h> 报错 没有这个 解决方案:把2,3先解决了就水到渠 ...
- VS2017中预编译头的作用(删除pch.h报错的原因)
刚使用VS2017的时候新建的项目的pch.h文件搞得一头雾水,点进去看了这个文件,发现里面什么内容都没有,但是把他删除之后就会报错说没有添加pch.h文件.百度了一下,发现这个是VS2017新加的一 ...
- opencv findContours 报错_acrt_first_block == header
报错_acrt_first_block == header 之前一直使用OpenCV3.3+VS2015 void AOIAlgorithm::findUnits(Mat& blkGray, ...
- openGL包含gl.h/glu.h/glaux.h/glut.h/报错
前言 目前现在openGL流行的库是glfw.glew.freetype基本上就能实现一般图形图像渲染,但是我们经常会看到openGL的一些老代码,经常包含gl.h/glu.h/glaux.h/glu ...
- ros/ros.h 报错找不到文件
1.在工作空间下,右键新建文件,创建cpp文件. 2.更改CMakeLists.txt文件,demo01_pub.cpp为我的文件名. ctrl+shift+b编译,界面上端出现搜索框提示,选择:ca ...
- rpm安装mysql报错NOKEY_rpm包安装报错: Header V3 RSASHA256 Signature, key ID fd431d51 NOKEY
报错信息:Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY 一.问题场景 RHEL 6.5 安装MySQL-5.5.44 首先,卸载rpm ...
- Linux安装mysql报错:Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
报错信息: Install 3 Packages (+2 Dependent packages) Total size: 209 M Is this ok [y/d/N]: y Downloadin ...
- jdk 11及以上 javax.annotation.Generated报错 @Generated报错
jdk11及其以上移除了该包,可以使用jar替代 <dependency><groupId>javax.annotation</groupId><artifa ...
- 碰到 stdafx.h报错
编译时报错: fatal error C1189: #error : Your version of the Windows SDK is earlier than 6.0. Try setting ...
最新文章
- Asp.net控件开发学习笔记(三)-控件开发基础
- Chromium之各国语言切换
- 【线段树合并】解题报告:luogu P4556雨天的尾巴 (树上对点差分 + 动态开点 + 线段树合并)线段树合并模板离线/在线详解
- 【数理逻辑】谓词逻辑 ( 谓词逻辑基本等值式 | 消除量词等值式 | 量词否定等值式 | 量词辖域收缩扩张等值式 | 量词分配等值式 )
- Boost:异步操作,涉及重新打包多个操作,但选择仅调用其中一个的测试程序
- python秒杀商品 多线程_Python——多线程
- Xamarin.Forms 5.0 项目实战发布!
- Python3只出现一次数字
- 设置目录_[LaTeX 尝试] titletoc - 为算法目录、定理目录等设置子目录
- 【分享】一套非常简单的企业即时通讯
- 【例题+习题】【数值计算方法复习】【湘潭大学】(一)
- 案例:按照JSP Model2思想实现用户注册功能
- android开发工具哪个好_小程序开发工具怎么用?哪个好用?
- 使用mybatis插入数据(insert)时返回主键的问题
- springmvc工作流程_springMVC工作原理及流程详细讲解
- LeetCode OJ - Construct Binary Tree from Preorder and Inorder Traversal
- 如何知道是哪个进程造成死锁?如何把这个进程杀掉?
- ServletContextListener 的应用
- Stata初步处理CFPS数据(merge)
- 三丰三坐标编程基本步骤_smt工程师总结smt贴片机编程步骤