我上次采访时遇到的一个问题:
设计一个函数
f,这样:Run Code Online (Sandbox Code Playgroud)f(f(n)) == -n哪里
n是32位有符号整数 ; 你不能使用复数运算.如果您无法为整个数字范围设计此类功能,请将其设计为可能的最大范围.
有任何想法吗?
我正在开发一个项目,其中c ++/cli库主要来自ac#application.
有没有办法让c ++/cli中的代码注释在visual studio中对c#intellisence可见?
假设没有,那么记录c ++/cli代码的最佳方法是什么,以便从c#中更容易使用(当然在c ++/cli中)?您对XML评论vs doxygen与其他工具(哪些)的看法是什么?
如果已知结构构件的对齐,是否可以找到结构类型的对齐?
例如.对于:
struct S
{
a_t a;
b_t b;
c_t c[];
};
Run Code Online (Sandbox Code Playgroud)
是S = max(alignment_of(a),alignment_of(b),alignment_of(c))的对齐?
在网上搜索我发现"对于结构化类型,其任何元素的最大对齐要求决定了结构的对齐"(在每个程序员应该知道的内存中)但我在标准中找不到任何类似的东西(最新草稿更准确).
编辑: 非常感谢所有的答案,特别是罗伯特·甘博为原始问题提供了一个非常好的答案,以及其他贡献者.
简而言之:
为了确保结构构件的对准要求,结构的对准必须至少与其最严格构件的对准一样严格.
至于确定结构的对齐方式,我们提出了一些选项,经过一些研究,我发现了这个:
如果我们想要使用"标准"解决方案,我们只限于std :: tr1 :: alignment_of,但如果你将c ++代码与c99的灵活数组混合,这将不起作用.
我认为它只有一个解决方案 - 使用旧的struct hack:
struct S
{
a_t a; …Run Code Online (Sandbox Code Playgroud) 是否有一个Windows API可以实现相当于单击"日期和时间属性"/"Internet时间"选项卡中的"立即更新"按钮(通过双击任务栏中的时钟打开)?
有没有办法监视窗口何时触发时间同步以及何时成功或失败?
在编辑文本时,用户可以使用键盘移位按钮和方向键来修改选择 - 一个位置保持锚定而另一个位置移动.通过向左按压,可以使可移动部分位于锚定部分的左侧.
我试图在WPF的TextBox中修改用户选择(为了讨论的目的,让我说我想成对选择字符,例如,当按Shift +左键时,将选择2个字符,而不仅仅是一个) .但是,当使用SelectionStart/SelectionIndex/CaretIndex/Select时,选择的"movebale end"总是在选择的最右端结束,使shift + left组合无用.
有什么方法可以保留"选择方向"?
考虑一个模板类,如:
template<typename ReturnType, ReturnType Fn()>
class Proxy
{
void run()
{
ReturnType ret = Fn();
// ... do something ...
}
};
// and a functions
int fn1() { return 5; }
float fn2() { return 5; }
Run Code Online (Sandbox Code Playgroud)
这可以通过使用以下方式实例化:
Proxy<int, &fn1> p1;
Run Code Online (Sandbox Code Playgroud)
但明确声明返回值类型似乎是不必要的.我想要实现的是:
someProxyInstantation<&fn1> p1;
someProxyInstantation<&fn2> p2;
Run Code Online (Sandbox Code Playgroud)
不幸的是,我没有C++预期,这似乎是语言(至少对我来说)一个隐蔽的角落.
如果我可以从函数指针其类型获得 - 这样的:性病:: TR1 ::的result_of <&FN> :: //类型错误1错误C2923: '的std :: TR1 ::的result_of':"FN1 '不是参数'_Fty'的有效模板类型参数
错误是有道理的,因为参数根本不是"类型"
C++ 0x具有decltype(&fn1),但距今已有数年.
在C++ 03(+ tr1)中执行此操作的任何方法?
限制: - 我不想传递仿函数,f1和f2必须保留具有返回值的全局函数(不能将其移动到参数).)