• 欢迎访问我的博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 本网站关闭了评论功能,联系请点击→邮箱
  • Ctrl+D 可快捷收藏本站点
关于C++全局对象不调用构造函数的问题

关于C++全局对象不调用构造函数的问题

背景 我们知道main函数之外的全局变量,如果在不同的cpp文件,其构造函数的执行顺序是不可控,可能会出现指针指飞等异常,因此,构造函数里只做一些简单的变量的初始化。而在STM32平台使用C++编码的过程中,我发现全局对象和静态对象,在使用中出现异常,我能够在程序中调用这个对象的方法。但是执行后与预期结果不符。   分析 通过串口打印这个对象的属性……

预处理–文件包含(#include)可能引发的编译错误

预处理–文件包含(#include)可能引发的编译错误

#include,它可以将一个文件的全部内容拷贝另一个文件中。那如果这个包含的文件出错,可能报错的就不在这个文件中。 这里有一个CMainApp.cpp文件,他包含了三个头文件,分别是CMainApp.h,aaa.h,CMcuFlash.h。 #include "CMainApp.h" #include "aaa.h"……

程序编译的四个阶段

程序编译的四个阶段

编译过程可以分为四个阶段: 预处理(-E) 预处理就是对源程序中的伪指令(以#开头的指令)和特殊符号进行处理的过程。伪指令包含宏定义指令,条件编译指令和头文件包含指令。gcc对C源文件进行预处理后会输出 .i 文件。 主要处理规则如下: (1)将所有#define删除,并且展开所有的宏定义。(预处理指令1 – 宏定义!) (2)处理所有条件编译指……