宏定义为:
#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还是名称?
我开始写一个库并考虑它的界面.我编写的以前的库都使用原始指针(内部和接口),现在我想尝试VS2010附带的智能指针库.
请帮忙 :)
在库中使用一个符合标准的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更复杂的东西.但如果是这样,我如何在一个编译器中编译库并让库用户自由地为他们的项目选择他们喜欢的编译器?
如果我使用reserve()为向量保留足够的元素,push_back()(或insert())会抛出任何异常吗?
是否有某个引用指定哪个stl函数抛出/不抛出任何异常?
谢谢.