例如:
int a = 12;
cout << typeof(a) << endl;
Run Code Online (Sandbox Code Playgroud)
预期产量:
int
Run Code Online (Sandbox Code Playgroud) 昨天我和同事讨论了什么是首选的错误报告方法.主要是我们讨论了异常或错误代码的使用,以报告应用程序层或模块之间的错误.
您使用什么规则来决定是否抛出异常或返回错误代码以进行错误报告?
有哪些技术和编程决策可以让Google能够如此快速地为查询提供服务?
每当我搜索某些东西(每天几次中的一次)时,我总是惊讶于他们如何在接近或不到1秒的时间内提供结果.他们可以采用哪种配置和算法来实现这一目标?
旁注:有点压倒性的想法,即使我要放置桌面应用程序并在我的机器上使用它可能也不会像谷歌快一半.继续学习我说.
以下是一些很棒的答案和指示:
我有点错误配置手指.这导致非常烦人的情况.
有没有办法禁用此行为,即禁用Visual Studio 2005+中的空文本块的副本?
在C#中,我们可以定义一个泛型类型,它对可用作泛型参数的类型施加约束.以下示例说明了泛型约束的用法:
interface IFoo
{
}
class Foo<T> where T : IFoo
{
}
class Bar : IFoo
{
}
class Simpson
{
}
class Program
{
static void Main(string[] args)
{
Foo<Bar> a = new Foo<Bar>();
Foo<Simpson> b = new Foo<Simpson>(); // error CS0309
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法可以在C++中对模板参数施加约束.
C++ 0x本身支持这个,但我说的是当前的标准C++.
在Windows上我遇到了一个我从未在Unix上遇到过的问题.这是如何使线程休眠不到一毫秒.在Unix上,您通常有许多选择(睡眠,睡眠和纳米睡眠)以满足您的需求.但是,在Windows上,只有Sleep具有毫秒级的粒度.
在Unix上,我可以使用select系统调用来创建一个非常简单的微秒睡眠:
int usleep(long usec)
{
struct timeval tv;
tv.tv_sec = usec/1000000L;
tv.tv_usec = usec%1000000L;
return select(0, 0, 0, 0, &tv);
}
Run Code Online (Sandbox Code Playgroud)
如何在Windows上实现相同的目标?
在Google C++样式指南中,有一个关于运算符重载的部分有一个奇怪的声明:
超载也有令人惊讶的后果.例如,您无法转发声明重载的类
operator&.
这似乎不正确,我找不到任何导致GCC出现问题的代码.有谁知道那个陈述是指什么?
我经常遇到Win32API结构的一些定义(但不限于它),它们具有cbSize以下示例中的成员.
typedef struct _TEST {
int cbSize;
// other members follow
} TEST, *PTEST;
Run Code Online (Sandbox Code Playgroud)
然后我们像这样使用它:
TEST t = { sizeof(TEST) };
...
Run Code Online (Sandbox Code Playgroud)
要么
TEST t;
t.cbSize = sizeof(TEST);
...
Run Code Online (Sandbox Code Playgroud)
我最初的猜测是,这可能会用于版本控制.接收类似于此结构的指针的DLL可以检查该cbSize成员是否具有用于编译DLL的预期值.或者检查是否对结构进行了正确的包装.但是我想在这里.
cbSizeWin32API上某些C++结构中成员的目的是什么?
由于Win32生产过程中的死锁而调试明显挂起的步骤和技术有哪些.我听说WinDbg可以用于此目的,但是请您提供明确的提示,说明如何实现这一目标?
我想知道是否可以使用 WinDbg 来了解导致句柄分配的调用堆栈。
例如:
#include <windows.h>
#include <conio.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Press ENTER to leak handles." << endl;
_getch();
cout << "Leaking handles" << endl;
for (int i = 0; i < 100; ++i)
{
HANDLE h = CreateEvent(NULL, FALSE, FALSE, NULL);
if (h != NULL)
{
cout << ".";
}
}
cout << "Handles leaked. Press ENTER to exit." << endl;
_getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在构建此示例并在 WinDbg 中启动它之后,是否可以获取分配句柄的调用堆栈,在该行上方的示例中:
HANDLE …Run Code Online (Sandbox Code Playgroud) 我有一个(可能)冗长的操作a,我想对其施加限制时间约束t(以毫秒为单位)。如果操作a 的完成时间少于t毫秒,那么我将返回操作a的答案;否则我想中止操作并返回一个正确的错误代码,说明超出了时间限制。
我怎样才能在 C# 中完成这个?如果您有其他与语言无关的想法,请随时分享?