小编twf*_*twf的帖子

为什么MAKEINTRESOURCE()有效?

宏定义为:

#define MAKEINTRESOURCEA(i) ((LPSTR)((ULONG_PTR)((WORD)(i))))
#define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i))))
Run Code Online (Sandbox Code Playgroud)

为什么这可以用于指示资源ID(16位无符号int)或其名称(指向char数组的指针)?这是否有效地将地址空间(在32位系统上)限制为16位?否则,系统如何知道我使用的是ID还是名称?

c c++ windows winapi

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

库应该使用使用智能指针的接口吗?

我开始写一个库并考虑它的界面.我编写的以前的库都使用原始指针(内部和接口),现在我想尝试VS2010附带的智能指针库.

  1. 界面应该使用智能指针吗?(可能强迫库用户也使用智能指针?)
  2. 如果接口使用原始指针但是库内部使用智能指针会不会很麻烦?(它甚至可能吗?shared_ptr没有release()方法......)
  3. 两个符合c ++ 0x的智能指针库(比如boost和VS2010)可以互换使用吗?(假设我使用VS2010编写我的库,用户使用boost)

请帮忙 :)

c++ smart-pointers

9
推荐指数
1
解决办法
740
查看次数

在闭源库中使用STL

在库中使用一个符合标准的STL是否安全,在使用该库的项目中另一个是否安全?例如:

//library.h

#include <string>  //let's say here it uses minGW STL

void Foo(std::string& str_mingw);

//library.cpp
void Foo(std::string& str_mingw) { /*do something*/ }



//application.cpp

#include "library.h"
#include <string>  //let's say here it uses VStudio STL

void Bar()
{
  std::string str_vstudio;
  Foo(str_vstudio);
  //Foo() inside the .lib or .dll uses string from minGW,
  //but here a string from VStudio is used
}
Run Code Online (Sandbox Code Playgroud)

在我看来,糟糕的事情会发生,特别是如果使用的不是简单的字符串,而是像tr2 :: thread更复杂的东西.但如果是这样,我如何在一个编译器中编译库并让库用户自由地为他们的项目选择他们喜欢的编译器?

c++ stl

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

stl和例外

如果我使用reserve()为向量保留足够的元素,push_back()(或insert())会抛出任何异常吗?

是否有某个引用指定哪个stl函数抛出/不抛出任何异常?

谢谢.

c++ stl

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

标签 统计

c++ ×4

stl ×2

c ×1

smart-pointers ×1

winapi ×1

windows ×1