#define _AFX_NO_DEBUG_CRT导致编译错误流

时间:2009-08-12 11:26:20

标签: c++ visual-studio-2008 mfc

我在Visual Studio 2008下有一个MFC C ++项目编译器。

我在#include之前在我的stdafx.h中添加了一个_AFX_NO_DEBUG_CRT,以避免MFC提供的所有调试新增和删除(我希望提供自己的更好的跨平台兼容性)。

然而,当我这样做时,我得到了一系列错误,如下所示:

>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2059: syntax error : '__asm'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ')' before '{'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ')' before '{'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ')' before '{'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ';' before '{'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : warning C4091: '' : ignored on left of 'int' when no variable is declared
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ';' before 'constant'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ';' before '}'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ';' before ','
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2059: syntax error : ')'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2059: syntax error : ')'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2059: syntax error : ')'
1

我“认为”它可能与__asm int 3调用有关,但我无法确定。以前有人有这个问题吗?如果是这样,你是如何解决的?我是否坚持使用MFC的内存跟踪?我真的希望不是因为它会使我的库不那么跨平台:(

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

我想出了一种方法,它涉及使用/ FORCE:MULTIPLE命令行强制它使用我的而不是MFC。这一切似乎都很好。我现在甚至可以跟踪由我不拥有的函数执行的“mallocs”和“new”:)

如果有人有任何更好的解决方案,那么请发布它们但是现在这似乎解决了我的问题:)

答案 1 :(得分:2)

我过去曾尝试弄乱_AFX_NO_DAO_SUPPORT宏,但它所造成的一切都导致无休止的崩溃。我最终看到了这篇文章:

PRB: Problems Occur When Defining _AFX_NO_XXX

它没有具体列出您尝试使用的那个,但它仍然适用。

答案 2 :(得分:0)

尝试将#define放在项目编译选项中,而不是放在stdafx.h的顶部。

如果您正在使用MFC,您如何期望构建跨平台库?避免新的和删除重载不会有所作为。

此外,您永远不会将分配跟踪器写为MFC提供的可靠和完整的分配跟踪器。 YAGNI,专注于开发您的实际应用程序。