小编Owe*_*wen的帖子

插入符号('^')在C++/CLI中的含义是什么?

我刚刚遇到这个代码,一些谷歌搜索没有解释这个神秘的(对我来说)语法.

Hashtable^ tempHash = gcnew Hashtable(iterators_);

IDictionaryEnumerator^ enumerator = tempHash->GetEnumerator();
Run Code Online (Sandbox Code Playgroud)

插入物的意思是什么?(这gcnew对我来说也是新的,我在这里问过这个问题.)

.net c++-cli

199
推荐指数
6
解决办法
9万
查看次数

何时分配/初始化函数级静态变量?

我非常有信心在程序启动时分配(并初始化,如果适用)全局声明的变量.

int globalgarbage;
unsigned int anumber = 42;
Run Code Online (Sandbox Code Playgroud)

但是在函数中定义的静态的呢?

void doSomething()
{
  static bool globalish = true;
  // ...
}
Run Code Online (Sandbox Code Playgroud)

globalish分配的空间是什么时候?我猜测程序什么时候开始.但是它也被初始化了吗?或者它doSomething()是在第一次调用时初始化的?

c++ variables

82
推荐指数
5
解决办法
6万
查看次数

什么是gcnew?

我偶然发现了这段代码,我很自豪地去问作者这意味着什么.

Hashtable^ tempHash = gcnew Hashtable(iterators_);

IDictionaryEnumerator^ enumerator = tempHash->GetEnumerator();
Run Code Online (Sandbox Code Playgroud)

gcnew使用它而不仅仅是简单的是什么,有多重要new?(我也被插入符号困扰;我在这里过这个问题.)

.net c++-cli

53
推荐指数
3
解决办法
5万
查看次数

如何以最小增量(或接近它)改变浮点数?

我有一个double价值f,并想要一个稍微大一点(或更小)的方法来获得一个新的值,该值尽可能接近原始值但仍严格大于(或小于)原始值.

它不必靠近最后一位 - 更重要的是,我所做的任何改变都能保证产生不同的值,而不是回到原始值.

c c++ floating-point

47
推荐指数
3
解决办法
7691
查看次数

如何在TortoiseSVN中正确使用KDiff3来解决冲突?

我将TortoiseSVN设置为使用KDiff3作为冲突解决工具(我发现它显示了比内置TortoiseMerge更有用的合并信息).

当我用Tortoise的"编辑冲突"命令打开一个文件时,它会显示三个文件,我必须手动选择"合并 - >合并当前文件".问题是KDiff3将结果保存到source_file.working而不是source_file.因此,如果不执行"另存为",则不会修改具有冲突的真实文件.有没有办法做这个手册每次都保存?

我知道这不是一个严格意义上的编程问题,而是一个程序员常用的辅助过程,它应该在这里很有用.我在其他地方找不到答案.

svn diff tortoisesvn conflict

28
推荐指数
3
解决办法
9841
查看次数

Visual Studio可以将时间戳放在构建日志中吗?

在构建日志中,我想了解每个项目编译的开始和结束时间.有没有办法让VS这样做?

build visual-studio

19
推荐指数
3
解决办法
8301
查看次数

如何处理C++中的数组(在堆栈上声明)?

我有一个类来解析一个矩阵,将结果保存在数组成员中:

class Parser
{
  ...
  double matrix_[4][4];
};
Run Code Online (Sandbox Code Playgroud)

这个类的用户需要调用一个API函数(例如,我无法控制的函数,所以我不能只是改变它的界面以使事情更容易工作),如下所示:

void api_func(const double matrix[4][4]);
Run Code Online (Sandbox Code Playgroud)

我让调用者将数组结果传递给函数的唯一方法是将成员公开:

void myfunc()
{
  Parser parser;
  ...
  api_func(parser.matrix_);
}
Run Code Online (Sandbox Code Playgroud)

这是做事的唯一方法吗?我对这样声明的多维数组的不灵活性感到震惊.我认为matrix_基本上和a一样double**,我可以(安全地)在两者之间施放.事实证明,我甚至找不到一种不安全的方式在事物之间施放.假设我在Parser课程中添加了一个访问者:

void* Parser::getMatrix()
{
  return (void*)matrix_;
}
Run Code Online (Sandbox Code Playgroud)

这将编译,但我不能使用它,因为似乎没有办法转回到怪人数组类型:

  // A smorgasbord of syntax errors...
  api_func((double[][])parser.getMatrix());
  api_func((double[4][4])parser.getMatrix());
  api_func((double**)parser.getMatrix()); // cast works but it's to the wrong type
Run Code Online (Sandbox Code Playgroud)

错误是:

错误C2440:'type cast':无法从'void*'转换为'const double [4] [4]'

......有一个有趣的附录:

虽然存在对引用或指向数组的指针的转换,但是没有对数组类型的转换

我无法确定如何转换为引用或指向数组的指针,尽管它可能对我没有帮助.

可以肯定的是,在这一点上,这个问题纯粹是学术性的,因为void*演员阵容几乎不比一个班级成员离开公众更清晰!

c++ arrays

15
推荐指数
2
解决办法
2310
查看次数

任何方式从命令行做Visual Studio"仅项目"构建?

devenv mysolution.sln /build "Release|Win32" /project myproject
Run Code Online (Sandbox Code Playgroud)

从命令行构建时,似乎我可以选择执行/build或者/rebuild,但是没有办法说我想做"仅项目"(即不构建或重建指定项目的依赖项).有谁知道一种方式?

command-line visual-studio-2008 visual-studio

14
推荐指数
3
解决办法
1万
查看次数

版本控制的版本控制?

我在我公司的最后一个版本中监督分支和合并,并且多次不得不修改我们的Subversion预提交挂钩以强制执行对签入注释等的不同要求.每次编辑这些文件时我都有点紧张,因为(a)它们是现场制作系统的一部分,虽然只是在内部使用(我们不是一个庞大的组织),而且(b)它们不是在版本控制下自己.

我很好奇人们在他们的版本控制基础设施上有什么样的故障保险.每日备份?"Meta"版本控制?我想前者在这里作为整个存储库备份的一部分.随着登记入住要求的复杂性增加,后者将非常有用......

version-control

13
推荐指数
1
解决办法
1299
查看次数

如何禁用Visual Studio宏"提示"气球?

每当我在Visual Studio中使用宏时,我会在系统托盘中找到一个恼人的尖端气球并伴随着"砰"的声音.它说:

Visual Studio .NET宏

要停止宏运行,请双击旋转盒式磁带.
点击此处不再显示此气球.

我无法点击气球,因为我的宏运行得那么快.

这可以通过一些对话框选项控制吗?

(我发现有人在其他网站上问过这个问题,但在那里没有回答.我在这里给予赞誉,因为我已经复制并粘贴了一些来自那里的文章.)

macros tweak visual-studio

7
推荐指数
1
解决办法
2925
查看次数