zoukankan      html  css  js  c++  java
  • 关于预编译头文件使用的注意事项

    本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/



    在编写MFC项目时,必须要开启编译器的“使用预编译头”选项,如果此时项目需要与其他非MFC项目共享一些源码文件,就会引发问题:

    1. MFC项目的所有cpp文件必须引用一个预编译头文件(默认情况下为“stdafx.h”),其中包含了整个项目需要共用的头文件
    2. 非MFC项目中则没有上面这个需求,项目中可能直接就没有“stdafx.h”这个头文件的定义

    最开始我想到了一个解决的思路是使用宏定义来决定需要共享的cpp文件是否include “stdafx.h”头文件:

    // Author :大便一箩筐 2016-07-07
    
    #ifdef _XXX_PROJECT__
    #    include "stdafx.h"
    #endif
    

    结果发现编译器会报出一个编译错误:意外的#endif

    搜索一番后发现原因如下:
    预编译头文件的实现机制是在处理预处理指令前在项目所有的cpp文件中查找 #include "stdafx.h" 指令,如果查找失败,则会编译报错;如果查找成功,则会忽略这个指令前所有的代码,再对cpp模块执行编译。
    在启用预编译头的项目中 #include "stdafx.h" 指令必须放在cpp中所有有效代码的前面。上面的报错就是因为 #ifdef XXX_PROJECT_ 语句直接被编译器忽略了。

    因此解决办法只能是将cpp文件在MFC项目中维护一个副本,手动(或者自己写一个工具)与其他工程中的文件进行同步。

  • 相关阅读:
    requests模块获取cookie和禁止重定向
    python 获取当前,上级,上上级路径
    jmeter正则表达提取器以及全局变量
    Linux性能监控软件netdata中文汉化版
    windows下搭建jenkins+allure+pytest
    Flask 重写wtforms验证器异常信息
    redis info 详解
    centos 安装setup命令的方法
    redis 配置
    linux 使用 vim 玩python
  • 原文地址:https://www.cnblogs.com/dbylk/p/5650216.html
Copyright © 2011-2022 走看看