所以我正在使用Visual Studio 2005,对于我当前的项目,我正在构建一个C#Add-In来处理AspectC ++的各个方面的编织。收集方面和源文件并将它们提供给方面编译器非常简单,但这会生成新的(修改过的)源文件。我正在尝试模拟标准的AspectC ++加载项:http://www.pure-systems.com/AspectC_Add-In.22+M54a708de802.0.html,因此我希望保持项目的源文件不变,因为我将编织文件提供给C ++编译器。假设我甚至可以这样做(不确定如何),我如何让调试器正确指向原始源文件?我知道我必须取消选中VS选项,因此源不必与编译版本匹配,但我不知道如何在不直接修改源文件的情况下将两者关联起来。有什么建议吗?
答案 0 :(得分:0)
听起来你想在预处理器之前或之后修改源代码。在这种情况下,您应该使用#line指令,告诉编译器它实际处理的文件和行。这是预处理器的工作方式,它将所有头文件包含在一个大型文件中,该文件包含#line指令,它使编译器能够报告正确行的错误,并在调试器的符号中指定正确的行。 / p>
您应该尝试在源文件上运行预处理器。这将向您展示#line指令的工作原理。 cl.exe命令行选项/ P将在这里帮助您。请记住,您将需要编译文件所需的所有其他预处理器选项,如/ D和/ I,以便工作。
http://msdn.microsoft.com/en-us/library/b5w2czay(VS.71).aspx