随笔-90  评论-947  文章-0  trackbacks-0

如题,不知道这样说是不是清楚了。

就是说,我们把新的类引入我们自己的工程后,

如果我们的工程打开了预编译头,就需要在.cpp加上#include <stdafx.h>,或者关闭本工程或者那个cpp的预编译头选项;如果我们的工程关闭了预编译头,就要确保那个.cpp里没有#include <stdafx.h>。

这样感觉很不爽。如果是用别人的成品库,我会觉得最好不改别人的代码,于是只好改工程里的选项,麻烦。如果自己写个类,也想让用的人(虽然通常是我自己)不要每次遇到这个麻烦。

有没有某种方法,在代码里加上类似:
#pragma precompileheader(close)
然后就不用管stdafx.h了,直接把文件加到工程里就好了

posted on 2010-03-29 10:30 溪流 阅读(8676) 评论(17)  编辑 收藏 引用 所属分类: C++

评论:
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-29 11:23 | Bill Hsu
谢谢分享~  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-29 11:30 | 溪流
@Bill Hsu
谢啥?等你们支招阿  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-29 12:22 | Davy.xu
一般是把所有工程的包含文件放在一个A头文件里,stdafx.h里包含这个A.h 只在cpp里包含stdafx 头文件里不包含任何头文件。这样无论怎么切换预编译头,都可以使用  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-29 12:25 | ebencheung
Project settings-->Select your project-->Click The C++ Tab-->Switch the combox to PreCompiled Headers-->Chose Automatic Using Precompiled headers

Project settings-->Select your project-->Click Stdafx.cpp-->Click The C++ Tab-->Switch the combox to PreCompiled Headers-->Chose create precompiled header file-->Fill the editctrl with "stdafx.h"


  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-29 13:00 | 溪流
@Davy.xu
非本帖讨论内容  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-29 13:00 | 溪流
@ebencheung
非本帖讨论内容  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-30 15:50 | 陈梓瀚(vczh)
没有,最好的办法就是坚持不用预编译头,因为所有的“代码型”类库为了可以在非VC++下使用,都没有包含预编译头。并且他们在发布的时候不可能联通stdafx.h,因此更加不可能有预编译头。  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-30 18:28 | ebencheung
@溪流
我所说的虽然不是你所要的在代码里改.但能解决你的问题.
  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-30 18:47 | 溪流
@陈梓瀚(vczh)
好的,,我本以为可能会有什么方法而我没有知道~  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-30 18:48 | 溪流
@ebencheung
不好意思,我觉得你没看懂我的问题。还是谢谢你的热心回复~  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-31 12:51 | ebencheung
@如果我们的工程打开了预编译头,就需要在.cpp加上#include <stdafx.h>,或者关闭本工程或者那个cpp的预编译头选项;如果我们的工程关闭了预编译头,就要确保那个.cpp里没有#include <stdafx.h>。

你的整个工程可以选择 Automatic Using Precompiled headers : stdafx.h
如果别人的cpp #include 了stdafx.h你的工程则会自动地使用预编译文件.
如果别人的cpp 没有 #include stdafx.h你的工程则会自动地对该文件不使用预编译文件.

@不用管stdafx.h了,直接把文件加到工程里就好了
这样你就可以不用管别人的文件是否#include "stdafx.h" 直接把文件加到工程你就好了.

你的方法是在代码里声明好,这样你的客户就不用关心stdafx.h了.想法虽好,但目前无果
我的方法是告诉客户如何使用他的工程才能不关心stdafx.h.此方法目前有效.  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-03-31 13:30 | 溪流
@ebencheung
谢谢,也许昨天是我误解你了,不过说话嘛还是说清楚点的好^_^
可是,,我没找到你说的 Automatic Using Precompiled headers,你说的是 VC6 下的?  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-04-01 12:28 | ebencheung
vs2003也有类似的选项.
在 配置属性-->C/C++-->预编译头-->创建使用预编译头
在下拉框中选择 自动生成(/YX)  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-04-01 15:28 | 溪流
@ebencheung
05、08都没有……  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-04-03 11:49 | 游客
可以用 /FI include 这个 stdafx.h,这样可以不用写在代码里面,当然 stdafx.cpp 的要除外了。  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-08-14 16:47 | hubb
#include "stdafx.h"
#pragma hdrstop

将以上两句代码放入.cpp文件的开头即可。这样不管包含该.cpp文件(及.h文件)的工程的预编译选项是什么,均可编译通过。实际上 #pragma hdrstop 的作用就是让包含该语句的.cpp文件不使用预编译头文件。
  回复  更多评论
  
# re: Visual Studio 有没有在代码中关闭预编译头选项的方法? 2010-08-15 00:46 | 溪流
@hubb
你写了 #include "stdafx.h"
要是该项目中并没有这个文件呢?  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理