我即将转向SVN作为我选择的RCS(使用CVS多年后)并且有一个基本问题......
我有许多共享项目 - 我希望与许多不同的项目一起使用的代码.是否可以将这些共享文件夹"链接"到需要它们的项目,因此签出项目也会检出共享代码?
例如,假设我的存储库看起来像这样:
根
--project1
--project2
--shared
--smtp
当我结账project1时,我也想结账共享和smtp.
回到我的CVS时代,我会在其中一个项目文件夹中使用Unix符号链接,但由于我的新SVN存储库不一定托管在Unix机器上,我不能这样做.
我有一个使用Visual Studio 2008构建的MFC应用程序,它需要在W2K,XP,2003和Vista上运行.应用程序在注册表中写入HKLM,只有在以管理员身份运行时才能在Vista上运行.
我的问题是:我可以强制应用程序自动作为管理员运行吗?它是否涉及创建清单文件?目前我在stdafx.h中有以下内容,我想在运行中创建一个清单文件:
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
Run Code Online (Sandbox Code Playgroud)
我可以修改此行以强制提升,还是需要对VC项目清单设置执行某些操作?
提前致谢.
我认为这里的大多数C++程序员都同意污染全局命名空间是一个坏主意,但是有时候可以忽略这个规则吗?
例如,我有一个我需要在特定应用程序中使用的类型 - 我应该如此定义它:
mytypes.h
typedef int MY_TYPE;
foo.cpp
MY_TYPE myType;
Run Code Online (Sandbox Code Playgroud)
或使用命名空间:
mytypes.h
namespace ns {
typedef int MY_TYPE;
}
foo.cpp
ns::MY_TYPE myType;
...
using namespace ns;
MY_TYPE myType;
Run Code Online (Sandbox Code Playgroud)
你喜欢哪个?是否有可能使用第一种方法?
假设Bar在名称空间中调用了一个类foo,您更喜欢哪种语法来源(.cpp/.cc)文件?
namespace foo {
...
void Bar::SomeMethod()
{
...
}
} // foo
Run Code Online (Sandbox Code Playgroud)
要么
void foo::Bar::SomeMethod()
{
...
}
Run Code Online (Sandbox Code Playgroud)
我使用命名空间并且更喜欢第一种语法,但是当使用Visual Studio类向导(WM_COMMAND处理程序等)添加代码时,自动生成的代码使用第二种语法.一种语法比另一种语法有什么优势吗?
如何确定当前用户(运行我的应用程序的用户)是否具有管理员权限(即是否为管理员组的成员)?对于访问受限的用户,我需要以不同方式注册一些COM组件.我正在使用C++(WTL和Win32).
我需要实现一个简单的 ATL COM 对象,该对象实现一个特定的接口,我已为其提供了 .tlb 文件和 .idl 文件。该接口非常简单,仅包含一个方法。我过去创建过许多 ATL 对象,但从未创建过必须实现特定接口的对象。我需要什么才能实现这一目标?我假设我需要在新对象 IDL 中的某处引用接口的 IDL 或 TLB?
欢迎任何指点。
我有一个ATL COM对象需要公开其他COM对象的集合,因此客户端可以找出集合中有多少对象(通过Count我可以提供的简单属性)并使用其索引访问对象.这个对象集合是动态的 - 计数是不固定的 - 我不知道构造我的主(父)对象时会有多少(所以我不能在我FinalConstruct的例子中创建这些对象).我想要公开的对象只具有只读属性.
我想要做的是std::vector在第一次需要时创建这些对象.我想在可能的情况下使用ATL智能COM指针,所以我不需要手动管理引用计数等,但我不确定我是否应该使用CComPtr'CComQIPtr'等.
假设我想要返回的对象被调用IChild,我希望我能做到这样的事情:
std::vector<CComPtr<IChild> > children;
...
CComPtr<IChild> child;
// Somehow instantiate an IChild?
...
children.push_back(child);
STDMETHODIMP Parent::GetAt(LONG index, IChild** pRet)
{
*pRet = children[index];
}
Run Code Online (Sandbox Code Playgroud)
如果有人对如何实现这一点有任何指示,我将非常欢迎.有一篇关于暴露静态对象的优秀文章,但我找不到任何有关特定问题的信息.
如果我在头文件中有以下内容:
foo.h中
Foo
{
public:
static const int BAR = 1234;
...
};
Run Code Online (Sandbox Code Playgroud)
我是否还需要在.cpp中定义变量,例如:
Foo.cpp中
const int Foo::BAR;
Run Code Online (Sandbox Code Playgroud)
我们有一个问题,在标头中初始化静态似乎适用于MS编译器,但在Mac上使用gcc似乎会给链接器错误.
我有一些动态创建的HTML代码,可能包含许多锚点.我想为每个锚添加一个点击处理程序,我可以想到许多不同的方法,但不知道选择哪一个.假设锚点有一个"myclass"类,点击时执行的代码对每个都是相同的.
方法1
$(document).delegate(".myclass", "click", function() {
// Do some work
});
Run Code Online (Sandbox Code Playgroud)
方法2:
var $a = $("<a href='#' class='myclass'>Text</a>");
$a.bind("click", function() {
// Do some work
});
Run Code Online (Sandbox Code Playgroud)
方法3:
function clickHandler() {
// Do some work
}
var $a = $("<a href='#' class='myclass'>Text</a>");
$a.bind("click", function() {
clickHandler();
});
Run Code Online (Sandbox Code Playgroud)
我喜欢方法2,因为处理程序代码正好在创建锚点并添加到DOM的地方,但如果我有很多这些锚点,那么JavaScript会有效地创建几十个单独的函数,还是仅仅使用一个函数就足够聪明?