小编T.W*_*orm的帖子

宏 $(VCTargetsPath) 到底在哪里定义的?

我们之前有过讨论。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/e04e7791-c0c4-4598-b900-310878f5af45/how-can-i-locate-and-change-the-vctargetspath-variable?forum=微软构建

搜索 .props 文件数小时后,.prop 和 .targets 中的所有 $(VCTargetsPath) 都被删除,但 Visual Studio 仍然可以正确识别该宏/变量。

通过修改 Microsoft.Cpp.ToolsetLocation.props,可以修改 $(VCTargetsPath),从而导致 VS 无法再创建新项目。

那么,这个宏到底定义在哪里呢?

我相信这个宏不是也不应该被硬编码。

c++ msbuild msbuild-task visual-studio

5
推荐指数
1
解决办法
8575
查看次数

为什么MS-DOS“不可重入”并且DOS中断不能调用另一个中断?

这个问题纯粹是学术性的,因为现在没有人使用MS-DOS,但我仍然想知道为什么。

在一些书籍和文章中,他们说如果你在另一个中断期间调用 DOS 中断,可能会导致死锁。这就是 MS-DOS 不可重入的原因。例如,RESIDENT PROGRAMS和另一本书,如下所述:

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
Run Code Online (Sandbox Code Playgroud)

它说,当我完成后,转到J,它试图返回到第一个DOS命令被中断的点,但是由于所有DOS变量和堆栈都被F和G更改了,当你尝试返回到原来的位置时中断 (B),实际上会返回到第二个中断 (E),这会导致死锁。

但就我而言,中断就像调用一样。保存当前CS:IP,检查向量,找到中断处理程序,执行,返回到中断发生的地方。完全像call。僵局怎么可能发生是没有意义的。

所以我的问题是到底是什么可能导致僵局?一个具体的例子将非常感激。

assembly dos interrupt interrupt-handling x86-16

5
推荐指数
1
解决办法
272
查看次数