我经常使用Visual Studio的多个实例,通常在同一解决方案的不同分支上工作.
VC6用于在标题栏中显示当前源文件的完整路径,但Visual Studio 2005似乎不会这样做.这使得它比我应该解决我正在查看的解决方案的哪个分支更加尴尬(我知道的最快的方法是将鼠标悬停在选项卡上,以便将源文件的路径作为工具提示).
有没有办法让完整的解决方案或文件路径进入标题栏,或者至少在某个地方始终可见,这样我就能快速分辨出哪个分支被加载到每个实例中?
在Visual Studio 2010及更早版本中,"在文件中查找"功能记住了您对"查找范围"选项的选择.
在2012年,该选项有时会重置为"当前文档",使其仅在单个文件中搜索.这可能很烦人,特别是当你没有注意到它已经完成时.
有什么方法可以强迫这个设置坚持我想要的东西(通常是"整个解决方案")?
作为问题的示例,突出显示源文件中的几行文本,然后打开"在文件中查找"框.它会将"Look In"设置更改为"Selection".关闭它,取消选择文本并再次在文件中查找.该设置将以静默方式恢复为"当前文档".在2010年及之前执行此操作不会更改设置.
有问题的另一种描述这里.
在将它用于数组时,是否可以在便携式代码中实际使用新的放置?
看来你从new []返回的指针并不总是和你传入的地址相同(5.3.4,标准中的注释12似乎证实这是正确的),但是我不知道你是怎么回事如果是这种情况,可以为数组分配一个缓冲区.
以下示例显示了该问题.使用Visual Studio编译,此示例导致内存损坏:
#include <new>
#include <stdio.h>
class A
{
public:
A() : data(0) {}
virtual ~A() {}
int data;
};
int main()
{
const int NUMELEMENTS=20;
char *pBuffer = new char[NUMELEMENTS*sizeof(A)];
A *pA = new(pBuffer) A[NUMELEMENTS];
// With VC++, pA will be four bytes higher than pBuffer
printf("Buffer address: %x, Array address: %x\n", pBuffer, pA);
// Debug runtime will assert here due to heap corruption
delete[] pBuffer;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
查看内存,编译器似乎使用缓冲区的前四个字节来存储其中项目数的计数.这意味着因为缓冲区sizeof(A)*NUMELEMENTS很大,所以数组中的最后一个元素被写入未分配的堆中.
所以问题是你能找到你的实现需要多少额外的开销来安全地使用placement new []吗?理想情况下,我需要一种可在不同编译器之间移植的技术.请注意,至少在VC的情况下,不同类的开销似乎不同.例如,如果我删除示例中的虚拟析构函数,则new []返回的地址与我传入的地址相同.
我正在尝试向Perforce软件仓库添加相当多的文件.在提交时,我收到以下错误,我认为这意味着它无法解决其中一个文件的文件类型:
如何获得有关此内容的更多信息,特别是哪个文件实际上遇到了问题?在解决问题时,错误并不完全有用.
有没有办法告诉Visual Studio 2005在打开解决方案时忽略源代码控制绑定?我有时需要加载一个我无法访问源控制服务器的解决方案,但Visual Studio仍坚持尝试连接,这意味着我必须为解决方案中的每个项目单击"在断开连接模式下临时脱机工作" (它有大约20个)因为它加载.出于某种原因,它还试图在我告诉它脱机工作后立即检查每个项目,所以我也必须点击该对话框.
因为我永远不需要在这个解决方案中编辑任何东西,有什么方法可以打开它并让Visual Studio忽略它有源控件绑定的事实吗?
编辑:理想情况下,我想要一种方法来做到这一点,而无需更改项目/解决方案文件.它们经常变化,因此每次有新版本时我都必须重做任何更改(否则我只需解开它们一次就不会出现问题).
感谢到目前为止的回复.