[译]用于Visual C ++的STL错误消息解密程序
By robot-v1.0
本文链接 https://www.kyfws.com/applications/an-stl-error-message-decryptor-for-visual-c-zh/
版权声明 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 19 分钟阅读 - 9103 个词 阅读量 0[译]用于Visual C ++的STL错误消息解密程序
原文地址:https://www.codeproject.com/Articles/1367/An-STL-Error-Message-Decryptor-for-visual-C
原文作者:Leor Zolman
译文由本站 robot-v1.0 翻译
前言
A set of tools to shorten the length of VC++ STL-related error messages so that the most vital information from a message fits within the status bar in VS.
一组工具,可缩短与VC ++ STL相关的错误消息的长度,从而使消息中最重要的信息适合VS中的状态栏.
目的(Purpose)
这样做的目的是缩短与VC ++ STL相关的错误消息的长度,以使消息中最重要的信息适合Visual Studio IDE底部状态栏行的可见部分(请参见顶部的" 4".)有关启用状态栏的说明).(The idea is to shorten the length of VC++ STL-related error messages so that the most vital information from a message fits withinthe visible portion of the status bar line at the bottom of the Visual Studio IDE (see item “4.” at the top of this file for instructions on enabling the status bar).)
您通常不需要查看的许多内容都会被删除,例如:(Lots of things you don’t usually need to see are deleted, e.g.:)
- 资格赛"(The qualifiers “)
std::
“,"(”, “)class
“,"(”, “)struct
“,"(”, “)__thiscall
“和”(” and “)__cdecl
消失(” disappear) - 迭代器从根本上缩短为” IT”,"(Iterators are radically shortened to either just “IT”, “)
iter
“或者,对于一个容器”(”, or, for a container “)cont
“,"(”, “)cont::iter
“(您选择要使用的表单).然后,通常可以从错误消息的其余上下文中推断出类型详细信息(” (you pick which form to use). You can then typically deduce the type details from the remaining context of error messages) - 删除形式小于的任何函子;其他人则完好无损.因此,在处理关联容器时,默认的” less <…>“函子不会使消息混乱(Any functors of the form less are deleted; others are left intact. Thus the default “less<…>” functors don’t clutter the messages when dealing with associative containers)
- 字符串,istream和(strings, istreams and)
ostreams
的(of)<char>
,他们的特质等减少到”(, their traits, etc. reduce to just “)string
“,"(”, “)istream
“,"(”, “)ostream
“等等.啊!(”, etc. Ahhh!) - iostream迭代器被识别并被缩写(iostream iterators are recognized and abbreviated)
- 类型名称中的分配器完全消失,函数参数列表中的分配器减少为”(Allocators in type names totally disappear, and allocators in function parameter lists reduce to just “)
alloc
" (甩掉包袱…)(” (good riddance…)) 当前,已针对VC ++ 6库的发行版,Dinkumware库的3.08版和STLPort的4.x版解决了所有* standard *容器.注意:当前不支持非标准容器(例如Dinkumware的hash和slist).(*Currently, all *standard* containers have been addressed, for the distribution version of the VC++6 library, version 3.08 of theDinkumware library and 4.x of STLPort. Note: non-standard containers (such as Dinkumware’s hash and slist) are not currently supported.*)
当然,有些情况我会忽略,有些情况我只是不知道如何过滤.欢迎提供反馈,但免责声明如下:(There are certainly cases I’ll have overlooked, and some I just didn’t know how to filter. Feedback is welcome, but here’s the disclaimer:)
我写这篇文章的原因是为了使使用Koenig/Moo方法教C ++成为可能,而又不会因为异常复杂的STL错误消息而吓跑学生.因此,过滤器留下了足够的信息来隔离涉及大多数日常数据类型的标准容器操作中的最常见错误(错误数量的参数,错误的参数类型等). STL高级用户始终可以随意禁用过滤以跟踪需要删除详细信息的错误,然后在不再需要此类详细信息时重新启用过滤.提供了两种方法来启用/禁用过滤:(The reason I wrote this was to make it possible to teach C++ using the Koenig/Moo approach without scaring away studentsdue to outlandishly complicated STL error messages. Thus, the filter leaves enough information to isolate the most common errors (wrongnumber of arguments, wrong argument type, etc.) in standard container operations involving most everyday data types. STL power usersare always free to disable filtering to track down errors where the deleted detail is needed, then re-enable filtering when such detailsmay no longer be needed. Two methods are provided to enable/disable filtering:)
- STLFilt.BAT文件是低带宽(The STLFilt.BAT file is low-bandwidth)
- STLTask任务栏图标程序使用方便,并且可以随时随时安装/卸载/重新安装Proxy CL.(the STLTask tray icon program is convenient to use and allows instantaneous installation/uninstallation/reinstallation of the Proxy CL at any time.)
怎么运行的(How it Works)
1.螺母和螺栓(1. Nuts and Bolts)
安装/激活后,MSCL IDE会找到代理CL,并且将其作为本机CL.EXE程序进行调用.代理CL检查是否存在控制切换文件(FILTERING.ON).如果未检测到切换文件,则代理CL会简单地使用与自身调用时相同的命令参数来调用本机CL.EXE(通常重命名为CL2.EXE).这将产生普通的错误消息输出.(When installed/active, the Proxy CL is found by the MSVC IDE and invoked as if it were the native CL.EXE program. The Proxy CL checks for the existence of thecontrolling toggle file (FILTERING.ON). If the toggle file is not detected, the Proxy CL simply invokes the native CL.EXE (usually renamed to CL2.EXE) withthe same command arguments it was itself invoked with. This yields ordinary error message output.)
如果检测到切换文件并且编译的文件类型符合过滤条件(请参阅下面的错误/限制部分的第四项,有关Proxy CL如何确定的详细信息),则Proxy CL会在两者之间建立一个进程间管道本机CL.EXE和Perl的调用.然后将本机CL的输出流通过管道传输到Perl进程的标准输入中(执行STLFilt.pl脚本),以简化与STL相关的消息.然后,Perl脚本的输出由MSVC IDE捕获并显示在其输出区域中,而 native * CL进程的进程状态代码控制着IDE生成序列的后续行为.(If the toggle file is detected AND the file type being compiled qualifies for filtering (see the fourth item in the Bugs/Limitations section below fordetails on how the Proxy CL makes this determination), then the Proxy CL sets up an interprocess pipe between the native CL.EXE and an invocation ofPerl. The native CL’s output stream is then piped into the standard input of thePerl process (executing the STLFilt.pl script) to simplify STL-related messages. The output of the Perl script is then captured by the MSVC IDE and displayed in its output area, while the process status code of the nativeCL process controls the subsequent behavior of the IDE’s build sequence.)
2.基本原理(2. Rationale)
尽管Proxy CL必须执行的命令行处理有些棘手,但它现在似乎可以令人满意地处理大多数MSVC生成的生成脚本(例外是基于第三方的生成,例如使用诸如TrueTime).我想启用/禁用筛选的切换文件方案的主要好处是,它不需要恒定的文件重命名-我的理论是,如果经常要重命名主要EXE文件,那就麻烦了.(While the command-line processing that the Proxy CL has to perform is a bit on the tricky side, it seems to now handle most MSVC-generated build scriptssatisfactorily (the exception being third-party-based builds, such as when using tools such as TrueTime). The main benefit of the toggle file scheme I’musing for enabling/disabling filtering is that it does not require constant file renaming–my theory is that if major EXE files are constantly having to berenamed, that is asking for trouble.)
在筛选器的早期,MSVC生成的构建脚本在处理过程中存在一些持久性错误,因此我确实赋予STLTask(任务栏实用程序)强大的功能来安装/卸载筛选器(请参阅GLOSSARY中的活动/不活动''说明.txt),以便更轻松地运行不受Proxy CL错误约束的本机版本.此安装/卸载将通过CL.EXE复制代理CL(CL.STL)或本机CL(CL2.EXE).由于此类操作过程中可能会发生崩溃等情况,因此STLTask会
非常努力地'‘尝试确保文件保持一致状态.如果在启动时对过滤器的当前状态有疑问(已安装或未安装?),则STLTask默认将所有内容重置为本地MSVC配置(已卸载Proxy CL).(In the early days of the filter there were several persistent bugs in the processing of MSVC-generated build scripts, so I did give STLTask (the taskbar utility) the power to install/uninstall the filter (see the description of Active/Inactive in GLOSSARY.txt) to make it easier to run native builds unencumbered by Proxy CL bugs. This installation/uninstallation copies either the Proxy CL (CL.STL) or the native CL (CL2.EXE) overCL.EXE. Because of the possibility of crashes etc. in the middle of such operations, STLTask tries real hard to make sure the files remain in a consistent state. If there is any doubt as to the current status of the filter (installed or not installed?) upon startup, STLTask resets everything to the native MSVC configuration (Proxy CL uninstalled) by default.)
发布细节(Release Details)
STLFilt网页:(STLFilt web page:) www.bdsoft.com/tools/stlfilt.html(www.bdsoft.com/tools/stlfilt.html) STLFilt.pl(Perl脚本):1.1版(9/2/2001)(STLFilt.pl (the Perl script): Release 1.1 (9/2/2001)) CL.CPP(代理CL):2.12版(2001年9月8日)(CL.CPP (The Proxy CL): Release 2.12 (9/8/2001)) STLTask任务栏图标控制器:2.02版(9/9/2001)(STLTask Taskbar Icon Controller: Release 2.02 (9/9/2001))
有关简要概述和快速设置说明,请参见QUICKSTART.txt.(See QUICKSTART.txt for a brief overview and quick setup instructions.)
请不要直接重新分发此软件包的任何部分;相反,为了确保人们获得最新版本,请指示有兴趣的人直接从其网页下载最新的stlfilt.zip(Please do not redistribute any part of this package directly; rather, to ensure folks get the latest version, please direct anyone interested to download the latest stlfilt.zip directly from its web page) www.bdsoft.com/tools/stlfilt.html(www.bdsoft.com/tools/stlfilt.html)
CUJ网站上提供的stlfilt.zip版本不是最新版本.(The version of stlfilt.zip available on the CUJ website is not the latest version.)
要收到更新通知,并有机会与其他过滤器用户一起参加论坛,请将电子邮件发送至:majordomo@www.bdsoft.com,邮件正文中带有” subscribe stlfilter"行.(To be notified of updates and have the opportunity to participate in a forum with other filter users, send email to:majordomo@www.bdsoft.com with the line “subscribe stlfilter” in the message body.)
该档案中有什么(What’s in this archive)
|README.txt(README.txt)
|您正在阅读:目的,错误/局限性,清单,确认和无耻的自我促进都可以在这里找到.(You’re reading it: purpose, bugs/limitations, manifest, acknowledgments andshameless self-promotion are all to be found here.)
GLOSSARY.txt |
|本软件和文档中使用的术语的定义.(Definition of terms used in this software and documentation.)
| |QUICKSTART.txt
|快速入门设置说明,适用于不耐烦的人.仅包含使Decryptor组件快速启动和运行所必需的基本指令(从此发行版的其他文档编译).(Fast track setup instructions, for the impatient. Contains just the essentialinstructions (compiled from the other documents in this distribution) necessaryto get the Decryptor components up and running quickly.)
| |STLTask-README.txt
|有关使用STLTask.EXE程序的补充文档.(Supplementary documentation on using the STLTask.EXE program.)
| |CL.EXE
|CL欺骗代理编译器.在Visual Studio编译期间替换常规的CL.EXE,并间接调用它.(The CL-spoofing proxy compiler. Replaces the stock CL.EXE during VisualStudio compilations, and invokes it indirectly.)
| |STLTask.EXE
|基于任务栏的代理CL控制实用程序. STLTask控制代理CL的安装/卸载,筛选器切换,剪贴板筛选和应用Visual Studio Service Pack的准备工作. STLTask提供了STLFilt.BAT的替代方法来切换过滤器控制文件. STLTask的安装/卸载功能用于Proxy CL无法正常工作的情况,例如复杂的项目,使用第三方工具(例如TrueTime)构建的项目,具有C ++和非C ++混合的项目(idl/odl) ?)以相同的命令行为目标,等等.“卸载"功能使针对这些类型的构建版本完全不使用Proxy CL变得容易,然后通过选择"安装"将其恢复以供以后工作.(Taskbar-based Proxy CL control utility. STLTask controls Proxy CLinstallation/uninstallation, filter toggling, clipboard filtering andpreparation for applying a Visual Studio Service Pack. STLTask provides analternative to STLFilt.BAT to toggle the filter control file. The installation/uninstallationfeature of STLTask is provided for situations where the Proxy CL does notwork correctly, e.g., complex projects, projects built with third-party tools(such as TrueTime), projects having a mixture of C++ and non-C++ (idl/odl?)targets on the same command line, etc. The “Uninstall” featuremakes it easy to just get the Proxy CL totally out of the picture for thesetypes of builds, then bring it back for later work by selecting"Install”.)
| |PROXY-CL.INI
|与CL.EXE和STLTask.EXE一起使用的ASCII配置文件.编辑适合您系统的文件,将其放在Windows目录(C:\ Windows或C:\ Winnt等)中,它将覆盖CL.EXE和STLTask.EXE的内置设置.(ASCII configuration file for use with CL.EXE and STLTask.EXE. Edit this fileas appropriate for your system, place it in the Windows directory (C:\Windows orC:\Winnt, etc.) and the will override the built-in settings of CL.EXE andSTLTask.EXE.)
| |STLFilt.pl
|Perl脚本.(The Perl script.)
| |STLFilt.BAT
|低带宽批处理文件实用程序可切换过滤控制文件.(Low-bandwidth batch file utility to toggle the filtering control file.Say)
or
控制过滤.在Visual Studio中工作时最有用(可以从DOS窗口运行STLFilt.BAT,或安装选项以直接将其调用到VC ++“工具"菜单中)或使用makefile.从命令行直接编译时,只需在运行CL或CL2之间进行选择(CL2.EXE是本机CL.EXE副本的建议名称).(to control filtering. Most useful when working from within Visual Studio (youcan run STLFilt.BAT from a DOS window, or install options to invoke it directlyinto the VC++ “Tools” menu) or using makefiles. When compilingdirectly from the command line, just choose between running CL or CL2(CL2.EXE is the recommended name for the copy of the native CL.EXE).)
注意:STLFilt.BAT和STLTask.EXE合作,并且可以互换运行以启用/禁用代理CL筛选.(Note: STLFilt.BAT and STLTask.EXE cooperate, and may be run interchangeablyto enable/disable Proxy CL filtering.)
| |CL.cpp
|代理CL程序的源.(Source to the Proxy CL program.)
| |STLTask-src.zip
|STLTask实用程序的源代码.必须安装wxWindowslibrary才能构建STLTask.EXE.(Source code to the STLTask utility. Installation of the wxWindowslibrary is required to build STLTask.EXE.)
| |CUSTOMIZE.txt
|有关从其源代码重建CL.EXE和STLTask.EXE以及使用STLFilt.bat批处理文件启用/禁用筛选的说明.(Instructions for rebuilding CL.EXE and STLTask.EXE from their sourcecode, and for using the STLFilt.bat batch file for enabling/disabling filtering.)
| |Samples.zip
|大量的CPP文件绘制了各种与STL相关的错误.在没有过滤器的情况下尝试使用它们!(A slew of CPP files that draw various STL-related errors. Try ‘em withand without the filter!)
| |CL-log.txt
|CL.cpp和STLFilt.pl的修订日志(Revision log for CL.cpp and STLFilt.pl)
| |STLTASK-log.txt
|STLTask.cpp的修订日志(Revision log for STLTask.cpp)
| |README.STLport
|有关Perlscript中STLPort特定的过滤问题的一些说明(Some notes regarding STLPort-specific filtering issues in the Perlscript)
|
CUJ文章(The CUJ Article)
有关此软件包的起源和原理的背景信息,请参阅我在2001年7月发行的< C/C ++用户杂志>上的文章.该文章是2001年7月的Web功能-这意味着它现在可以永久使用完整地在CUJ网站上的以下URL:(For background information on the origins and philosophy of this package, see my article in July, 2001 issue of The C/C++ Users Journal.The article was the Web Feature for July, 2001–that means it is now and forever available for viewing in its entirety on the CUJ web site, atthe following URL:) http://www.cuj.com/articles/2001/0107/0107b/0107b.htm?topic=articles(http://www.cuj.com/articles/2001/0107/0107b/0107b.htm?topic=articles)
自从CUJ文章被冻结以进行发布以来,对该软件进行了几项实质性更改,使该文章的某些部分过时.他们是:(Several substantive changes made to the software since the CUJ article was frozen for publication render portions of the article out-of-date. They are:)
- STLFilt.pl中的迭代器策略设置从数字值(1\2或3)更改为符号值(S,M或L).原始的” 1"设置对应于新的” L”(” Long"或" Large"扩展),原始的" 3"对应于新的" S"(" Small"或" Short"扩展).当然,新的" M"表示"中等"扩展. (感谢Scott Meyers建议使用符号而非(The iterator policy setting in STLFilt.pl was changed from a numeric value (1, 2 or 3) to a symbolic value (S, M or L). The original ‘1’ setting corresponds to the new ‘L’ (“Long” or “Large” expansion), and the original ‘3’ corresponds to the new ‘S’ (“Small” or “Short” expansion). The new ‘M’ means, of course, “Medium” expansion. (Thanks to Scott Meyers for suggesting the use of symbolic, rather than) 数字,名称.)(numeric, designations.))
- STLTask基于任务栏的实用程序被添加为STLFilt.BAT批处理文件的基于GUI的替代品(The STLTask taskbar-based utility was added as a GUI-based alternative to the STLFilt.BAT batch file)
- STLPort库支持已添加到STLFilt.pl.现在,相同的Perl脚本可用于所有三个库.(STLPort library support has been added to STLFilt.pl. The same Perl script now works with all three libraries.)
- 我最终在文章中提到的
精细打印状态行''实际上有一个名称:
状态栏’',它可以在Visual Studio中通过Tools … Options … Workspace打开和关闭标记为"显示状态栏"的复选框.我建议您保持打开状态.大多数情况下,这将减少滚动输出窗口的需要.(The “fine-print status line” I mention in the article actually has a name, as I finally learned: the “status bar”, and it is turned on and off within Visual Studio via the Tools…Options…Workspace checkbox labeled “Display status bar”. I recommend you leave it turned on; most of the time, this will alleviate the need to scroll the output window.) - 本文中的安装说明说要在"系统PATH的某个位置"放置Proxy CL.EXE.从CL.CPP的v2.1(和STLTask的v2.0)开始,应该将Proxy CL直接放入MSVC的bin目录(… \ VC98 \ bin).有关当前安装过程,请参见QUICKSTART.txt.(The installation instructions in the article say to place the Proxy CL.EXE “somewhere along your system PATH”. Beginning with v2.1 of CL.CPP (and v2.0 of STLTask), the Proxy CL should be placed directly into MSVC’s bin directory (…\VC98\bin). See QUICKSTART.txt for the current installation procedure.)
- 发行版中现已包含CL.EXE和STLTask.EXE的预编译版本.这两个程序在启动时都会从Windows目录中的配置文件(Proxy-CL.INI)中读取配置信息.如果配置文件不存在,则所有选项默认为在源代码中配置并编译到程序中的值.(Precompiled versions of both CL.EXE and STLTask.EXE are now included in the distribution. Both programs read configuration information at startup from a config file (Proxy-CL.INI) placed into the Windows directory. If the config file is not present, then all options default to values configured in the source code and compiled into the programs.)
错误/局限性(Bugs/Limitations)
-
在各种Perl实现中,ActiveState似乎效果最好.当将过滤器与其他Perls(例如MKS和Cygwin)结合使用时,我有一些关于进程间错误的报告.因此,如果遇到涉及僵尸Perl进程等的奇怪错误,请首先尝试安装和使用ActiveState Perl进行过滤.然后,您应该仍可以将* other * Perl用于其他使用过的Perl.(*Of the various Perl implementations out there, ActiveState seems to work best. I’ve had several reports of interprocess bugs when using the filter in conjunction with other Perls, such as MKS and Cygwin. Therefore, if you experience strange errors involving zombie Perl processes and such, first try installing and using ActiveState Perl for filtering. You should then still be able to use your *other* Perl(s) for whatever else you’ve been using them for.*)
-
有一些与字符串相关的STL错误,我还没有弄清楚如何过滤(例如,请参阅samples.zip档案中的tstring.cpp).如果有人可以提出一种针对此类构造的方法,我很乐于尝试处理它们…(There are some string-related STL errors I haven’t yet figured out how to filter (see tstring.cpp in the samples.zip archive, for example). If someone can suggest an approach to these kinds of constructs, I’d be glad to try to handle them…)
-
仅在相当典型的情况下才支持间接(@filename)命令行.当在命令行上将@filename检测为* only *参数时,代理CL会打开间接文件并仅查看其* last *行上的* last *项目.仅当此项具有可接受的C ++扩展名(filterExt字符串数组中的条目之一)时,才执行过滤.该名称周围可能带有引号.因此,如果混合使用了启用了过滤和未启用过滤的扩展名,则具有超过一行的源文件名(或当源文件不是最后一行的最后一件事)的间接命令文件的行为可能不正确. .到目前为止,还没有人向我报告过我的方案无法正确处理的任何VC生成的项目,但这并不一定意味着它不会发生…(*Support for indirect (@filename) command lines is limited to fairly typical cases; The proxy CL, when detecting @filename as the *only* argument on the command line, opens the indirect file and looks at only the *last* item on the *last* line of it. Filtering is performed only if this item has an acceptable C++ extension (one of the entries in the filterExt array of strings). That name may have quotation marks around it. Thus, indirect command files with more than one line’s worth of source file names (or when the source file is not the last thing on the last line) may behave incorrectly if there is a mixture of filtering-enabled and non-filtering-enabled extensions. So far, no one has reported to me any VC-generated projects that my scheme fails to properly process, but that doesn’t necessarily mean it isn’t going to happen…*) 当CL的第一个命令行arg为(*When the 1st command line arg to CL is*)*不(*not*)*一个间接的" @“文件名,然后从右到左扫描argv,以查找第一个参数,该参数既不是带有” object file"扩展名的文件名(objExt数组中的字符串之一),也不是不带扩展名的字符串全部(假设这些是选项).是否过滤的决定是基于第一个参数(从右到左工作),这些参数不是其中之一.(*an indirect “@” filename, then it scans argv right-to-left looking for the first argument that is neither a filename with an “object file” extension (one of the strings in the objExt array) nor a string with no extension at all (assumes those are options). The decision whether to filter or not is made based on the first argument (working from right to left) that *isn’t* one of those things.*)
-
如/D定义中包含转义双引号的命令行,CL可能无法正确处理.现在,它通过在所有’"‘字符前面加反斜杠来处理它们.进一步,以便通常处理以下行:(Command lines containing escaped double-quotes, as in /D definitions, probably won’t be handled correctly by CL. It now handles all ‘"‘characters by prepending a backslash to them. Going further, so as to generally handle lines such as:)…/DHAIRY =“这里是双引号:"和反斜杠:\"(… /DHAIRY=“Here’s a double quote: " and a backslash: \")
这将需要一个成熟的状态驱动解析器来处理所有的排列^现在,无论如何,编译此类行的唯一方法是卸载过滤器.(would require a full-blown state-driven parser here to handle all the permutations…for now, anyway, the only way to compile such lines is to uninstall the filter.)
如果出现上述任何问题,并且希望恢复为标准错误消息,最简单的操作是使用STLTask来"卸载"代理CL,直到需要再次过滤为止.然后使用STLTask再次"安装”.(When any of the above issues arise and you wish to revert to standard error messages, the easiest thing to do is use STLTask to “uninstall” theproxy CL until you need filtering again. Then use STLTask to “install” again.)
如果您遇到与上述项目文件问题有关的问题,则可以尝试从启用了过滤功能的Visual Studio中进行"仅编译”,而不是构建项目.(If you have problems relating to the project file issues described above, you might try doing a “compile only” from Visual Studio, with filteringenabled, instead of building a project.)
调试功能(Debugging Features)
CL.CPP和STLTask.EXE具有内置的调试功能. CL.CPP支持运行时调试配置:将DEBUG配置选项设置为true,以将状态消息记录到由DEBUG_DIR选项配置的目录中名为CL-dblog.txt的文件中.对于项目文件,启用调试后,CL.EXE还将复制名为@ atfile.txt的临时@file的副本.这可能有助于确定CL无法正确处理项目构建的原因.(CL.CPP and STLTask.EXE have debugging features built-in. CL.CPP supports runtime debug configuration: set the DEBUG configuration option to true to log status messages to a file named CL-dblog.txt in the directory configured by the DEBUG_DIR option. For project files, when debugging isenabled CL.EXE will also make a copy of the temporary @file named “atfile.txt”.This may help determine why CL fails to properly handle a project build.)
必须在编译时配置STLTask.CPP调试.将DEBUG符号设置为1并将DEBUG_DIR符号定义为所需的日志文件目录的名称,STLTask会将各种状态信息记录到指定目录中名为" debug.out"的文件中.(STLTask.CPP debugging must be configured at compile time. Set the DEBUG symbol to 1 and define the DEBUG_DIR symbol to the name of yourdesired log file directory, and STLTask will log various status info to a file named “debug.out” in the specified directory.)
如果您遇到代理CL失败的情况,请告诉我,以便解决.如果您了解问题并可以描述情况,那很好…如果不是,我很乐意帮助您解决问题并希望为将来修复CL.请将该项目减少到导致CL失败的最低配置,然后将其压缩并通过电子邮件发送给我(leor@bdsoft.com).我会尽力确定(If you run into a situation where the Proxy CL fails, please let me know so I can fix it. If you understand the problem and can describe thecircumstances, that’s great…if not, I’d be glad to help figure out the problem and hopefully fix CL for the future; please reduce the project tothe minimum possible configuration that results in CL failure, zip it up and email it to me (leor@bdsoft.com). I’ll do my best to determine the) 问题并纠正它.该程序与现在一样可靠(problem and correct it. This program is as reliable as it is now)**只要(only)**因为像您这样的人向我通报了这些问题(甚至在很多情况下为我解决了这些问题!)(because folks like you informed me about the problems (and even fixed themfor me on many occasions!))
致谢(Acknowledgments)
谢谢:(Thanks to:)
- Dave Smallberg提出了错误过滤的想法(希望我自己想到这个)(Dave Smallberg for the error filtering idea (wish I’d thought of it myself))
- Scott Meyers参加了他的ESTL研讨会-激发了这个项目的活动.(Scott Meyers for putting on his ESTL seminar - the event that inspired this project.)
- Thomas Becker用于在CL.CPP中编写Win32进程间通信代码(Thomas Becker for writing the win32 interprocess communication code in CL.CPP)
- 那些花时间向我发送错误和建议,和/或帮助调试的人:(The folks who took the time to email me with bugs and suggestions, and/or helped with debugging:)
托马斯贝克尔(*Thomas Becker*) 威尔卡(*Wilka*) 山姆
萨里斯特(Sam Saariste)
斯科特莱万多夫斯基(Scott Lewandowski)(*Scott Lewandowski*) 斯科特
迈耶斯(Scott Meyers)(Scott Meyers)
汤姆马尔科姆森(*Tom Malcolmson*) 简
斯特特(Jan Stette)
多米尼克马修(Dominic Mathieu)(*Dominic Mathieu*) 迈克尔
库克(Michael Cook)
安迪菲尔波特(*Andy Philpotts*) 罗伯
毕晓普(Rob Bishop)
约翰哈坦(*John Hattan*) 德里克
普赖斯(Derek Price)
比尔托皮(*Bill Torpey*) 约翰
彭尼(John Penney)
乔纳森萨姆布鲁克(*Jonathan Sambrook*) 阿哥斯(*Argos*) 马修
道格拉斯(Matthew Douglass)(Matthew Douglass)
戴夫康拉德(*Dave Conrad*) 斯科特
麦卡斯基尔(Scott McCaskill)
保罗萨格斯(*Paul Suggs*) 卡尔
利恩(Karl Lean)## 历史(History)
2002年11月7日-更新了下载.(7 Nov 2002 - updated download.)
许可
本文以及所有相关的源代码和文件均已获得The Code Project Open License (CPOL)的许可。
C++ VC6 Windows STL Visual-Studio Dev 新闻 翻译