我们之前有过讨论。
搜索 .props 文件数小时后,.prop 和 .targets 中的所有 $(VCTargetsPath) 都被删除,但 Visual Studio 仍然可以正确识别该宏/变量。
通过修改 Microsoft.Cpp.ToolsetLocation.props,可以修改 $(VCTargetsPath),从而导致 VS 无法再创建新项目。
那么,这个宏到底定义在哪里呢?
我相信这个宏不是也不应该被硬编码。
这个问题纯粹是学术性的,因为现在没有人使用MS-DOS,但我仍然想知道为什么。
在一些书籍和文章中,他们说如果你在另一个中断期间调用 DOS 中断,可能会导致死锁。这就是 MS-DOS 不可重入的原因。例如,RESIDENT PROGRAMS和另一本书,如下所述:
Run Code Online (Sandbox Code Playgroud)A interrupt occurs B interrupt handling C DOS command starts D new interrupt occurs E interrupt handling F DOS COMMAND starts G DOS command finished H interrupt finished I return to the original interrupt handling J return to original DOS command它说,当我完成后,转到J,它试图返回到第一个DOS命令被中断的点,但是由于所有DOS变量和堆栈都被F和G更改了,当你尝试返回到原来的位置时中断 (B),实际上会返回到第二个中断 (E),这会导致死锁。
但就我而言,中断就像调用一样。保存当前CS:IP,检查向量,找到中断处理程序,执行,返回到中断发生的地方。完全像call。僵局怎么可能发生是没有意义的。
所以我的问题是到底是什么可能导致僵局?一个具体的例子将非常感激。