小编cri*_*ell的帖子

801
推荐指数
5
解决办法
49万
查看次数

ifdef中的布尔值:"#ifdef A && B"与"#if defined(A)&& defined(B)"相同?

在C++中,是这样的:

#ifdef A && B
Run Code Online (Sandbox Code Playgroud)

同样如下:

#if defined(A) && defined(B)
Run Code Online (Sandbox Code Playgroud)

我当时认为它不是,但我无法找到与我的编译器(VS2005)的差异.

c++ conditional-compilation c-preprocessor

76
推荐指数
2
解决办法
8万
查看次数

用于检查.lib文件的工具?

我正在评估一些未记录的软件.当我构建一个示例项目时,我收到的链接器错误如下所示:

error LNK2019: unresolved external symbol

这个应用程序没有很多lib文件,所以我可以通过反复试验来解决这个问题,但我知道有一个更优雅的方法就是解决这个问题.

在java世界中,我会grep FOO*.jar找到jar,我正在寻找C++模拟.我正在使用Visual Studio 2005中的C++代码.

我怀疑带有/ LIST选项的lib.exe实用程序可以获取信息,但到目前为止我还没有成功.它只打印这个:

Microsoft (R) Library Manager Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

granite50.dll
granite50.dll
granite50.dll
granite50.dll
...

有什么建议?

visual-studio

70
推荐指数
4
解决办法
7万
查看次数

指针和参考参数之间的区别?

这些都是一样的:

int foo(bar* p) {
  return p->someInt();
}
Run Code Online (Sandbox Code Playgroud)

int foo(bar& r) {
  return r.someInt();
}
Run Code Online (Sandbox Code Playgroud)

忽略空指针潜力.这两个函数在功能上是否相同,无论它们someInt()是虚拟的还是传递给它们bar的子类bar

这会切片吗:

bar& ref = *ptr_to_bar;
Run Code Online (Sandbox Code Playgroud)

c++ pointers reference object-slicing

64
推荐指数
5
解决办法
4万
查看次数

_NT_SYMBOL_PATH格式

我正在尝试更多地使用windbg,并且我一直遇到符号缓存问题.我不清楚字符串的格式应该是什么.

我有一些要求:

我们在\\ foo\Build1234的分布式构建中的符号存档未组织为符号服务器.如果我理解正确,我需要使用cache关键字.

鉴于这些要求,这看起来像一个格式正确的srvpath:

cache*\\foo\Build1234;srv*c:\dev\symbols*http://msdl.microsoft.com/download/symbols
Run Code Online (Sandbox Code Playgroud)

编辑:

我刚刚开始阅读高级Windows调试,我误解了缓存关键字的工作原理.我认为这是告诉调试器该文件夹只是文件夹而不是符号服务器的一种方式.迈克尔离开他的评论后,我重读了这一部分,看到它确实像迈克尔描述的那样有效.

现在,当你使用时,我很困惑; 或**分隔路径/ URL.当你需要srv*前缀时.在windbg的在线帮助中,他们给出了这个例子:

\\someshare\that\cachestar\ignores;srv*c:\mysymbols*http://msdl.microsoft.com/download/symbols;cache*c:\mysymbols;\\anothershare\that\gets\cached
Run Code Online (Sandbox Code Playgroud)

来自\\ someshare的符号未缓存,Microsoft的符号缓存在c:\ mysymbols中,而c:\ mysymbols用作缓存*指令右侧任何其他路径的缓存.

偶尔使用srv*会让我感到困惑 - 我不明白为什么第一个和最后一个路径都没有以srv*作为前缀.

编辑2:

这慢慢开始对我有意义.srv指令用于符号服务器,而不用于普通符号目录.所以,我相信我原来问题的答案是这样的:

\\foo\Build1234;cache*c:\dev\symbols;srv*http://msdl.microsoft.com/download/symbols
Run Code Online (Sandbox Code Playgroud)

windbg

30
推荐指数
1
解决办法
2万
查看次数

清理你的#include语句?

如何在C或C++项目中维护#include语句?似乎几乎不可避免的是,最终文件中的include语句集合不足(但由于项目的当前状态而恰好起作用)或包含不再需要的东西.

您是否创建了任何工具来发现或纠正问题?有什么建议?

我一直在考虑编写一些单独编译每个非头文件的东西,每次都删除一个#include语句.继续这样做,直到达到最小的包含集.

为了验证头文件是否包含他们需要的所有内容,我将创建一个源文件,它所做的只是包含头文件并尝试编译它.如果编译失败,那么头文件本身缺少一个include.

在我创作之前,我想我应该问一下.这似乎是一个普遍的问题.

c++ header file include

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

C++ 0x中C++枚举的基础类型

我一直试图阅读一些C++标准来弄清楚枚举是如何工作的.实际上比我原先想象的更多.

对于作用域枚举,int除非使用enum-base子句(它可以是任何整数类型)另外指定,否则基本类型是明确的.

enum class color { red, green, blue};  // these are int
Run Code Online (Sandbox Code Playgroud)

对于无范围的枚举,似乎底层类型可以是任何可以工作的整数类型,并且它不会大于int,除非它需要.

enum color { red, green, blue};  // underlying type may vary
Run Code Online (Sandbox Code Playgroud)

由于基础类型的无范围激励不是标准化的,处理序列化实例的最佳方法是什么?到目前为止,我一直在转换到int写入时串行化intenum在读取时将变量设置在开关中,但它似乎有点笨拙.有没有更好的办法?

enum color { red, green, blue };
color c = red;
// to serialize
archive << (int)c;
// to deserialize
int i;
archive >> i;
switch(i) {
  case 0: c = red; break;
  case 1: c = green; break;
  case 2: c = blue; break;
}
Run Code Online (Sandbox Code Playgroud)

c++ enums c++11

27
推荐指数
4
解决办法
3万
查看次数

这些Visual Studio 2005文件的用途是什么?

我只是(重新)加入了一家公司来处理一些C++项目.我正在查看文件,我正在试图找出所有与Visual Studio相关的文件.许多我怀疑是以前版本的IDE的孤儿.

我列出了下面的所有文件扩展名,并注释了我认为我理解的文件扩展名.如果可以提供有关各个文件的更多信息或它们与不同文件的关联方式,我将非常感激.我还想听听在某些版本控制系统下处理这些文件的建议(我们现在使用Visual SourceSafe).

.dsp - Developer Studio项目(已
过时?).
dsw - Developer Studio工作区(已废弃?).ncb - 无编译浏览器文件(用于intellisense?)
.
slln - 解决方案.suo - 解决方案用户选项
.vcproj - VC++项目文件
.vcproj .$ DOMAIN.$ USER.user - 嗯?
.vcproj.vspscc - ?
.vsscc - ?
.vssscc - ?
.vc08 - ?
让我真正疯狂的是二进制文件而不是简单的文本文件.为什么MS讨厌文本文件这么多?叹...

-cr

file-extension visual-studio-2005 visual-studio

10
推荐指数
1
解决办法
4005
查看次数

VS/MFC仍然使用"afx_msg"装饰器吗?

我正在研究一个在VC6时代开始的MFC程序.那时候有一个类向导,在注释中使用了一堆装饰器和标记来解析类文件.

例如,它会在它维护的消息处理程序前插入afx_msg.这将标志着与代码块// {{AFX_MSG_MAP(该app)/}} AFX_MSG_MAP意见,以帮助它找到的消息映射它要处理的部分.

AFAIK,这不再需要了.除此之外,类向导存在很多缺点,我们不得不对这些托管块进行大量手动编辑,而且我们从来没有经常使用它.

有没有其他理由继续使用afx_msg及其同类?

c++ mfc visual-studio

8
推荐指数
1
解决办法
3138
查看次数

在Visual Studio中更改成员变量的字体

我不认为这是可能的,但无论如何我都会问...

有没有办法在编辑器中设置用于类成员变量的颜色和字体?在过去的4年里,我刚刚回到Java世界,我回到了C++和Visual Studio,我真的想念Jetbrains的IDEA(一个杀手级的Java IDE).我已经习惯让编辑器使用颜色和字体来表示成员函数,静态等等......

如果Visual Studio无法做到,是否有更好的C++/MFC编程IDE?Visual Studio让我觉得我已经进入了一台时间机器并且已经被运回了十年.除了我还是38岁并且变形了.

科里

visual-studio-2005 syntax-highlighting visual-studio

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