我最近开始阅读 Andrei Alexandrescu 的 Modern C++ Design。阅读编译时断言后,我尝试了以下代码:
模板<bool> struct CompileTimeChecker
{
CompileTimeChecker(...){};
};
模板<> struct CompileTimeChecker<false>{};
#define STATIC_CHECK(expr, msg) \
{\
类 ERROR_##msg{}; \
(void)sizeof(CompileTimeChecker<(expr)!=0>((ERROR_##msg()))); /*第1行*/ }
int main()
{
STATIC_CHECK(sizeof(char)>sizeof(int),TypeTooNarrow); /*第2行*/
STATIC_CHECK(sizeof(char)<sizeof(int),TypeTooNarrow); /*第3行*/
}
由于第 2 行,代码不应编译,但编译正常。如果我将第 1 行更改为
(void)(CompileTimeChecker<(expr)!=0>((ERROR_##msg()))); /*第1行*/ }
或者
新的 CompileTimeChecker<(expr)!=0>((ERROR_##msg())); /* 第 1 行 */ }
它按预期工作。我不明白。
我的(本地,windows/mono)应用程序将重要事件记录到文本文件中.在突然崩溃/失败/强行退出的情况下,没有数据应保持不成文(尽可能).因此,我目前使用简单的追加文本文件方法:
Public Shared Sub LogAppEvent(ByVal EventData As String)
Dim Config As ConfigHandler = ConfigHandler.GetSingleton()
Dim AppLog As New IO.StreamWriter(Config.GetUserFilesRootDir() & ConfigOptions.AppLogName, True)
AppLog.WriteLine(String.Format("[{0}] {1}", Date.Now.ToString(), EventData))
AppLog.Close()
End Sub
Run Code Online (Sandbox Code Playgroud)
这是非常次优的,但是日志事件非常罕见.你会建议搬到System.Diagnostics伐木班吗?
或者你可以建议另一个解决方案?
我试过谷歌搜索,但我无法得出一个合适的答案.任何C++专家都可以告诉我为什么C++要求你<T>用typename关键字声明OuterClass :: Innerclass?
我是数据结构课程的助教,我一直看到这个错误.我知道要告诉我的学生他们需要将typename放在返回类型的前面,但我无法解释为什么这是必需的.
谢谢.
有没有人知道IE9中渐变的供应商前缀,或者我们仍然应该使用他们的专有过滤器?
我为其他浏览器获得的是:
background-image: -moz-linear-gradient(top, #444444, #999999); /* FF3.6 */
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #444444),color-stop(1, #999999)); /* Saf4+, Chrome */
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#444444', EndColorStr='#999999'); /* IE6,IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#444444', EndColorStr='#999999')"; /* IE8 */
Run Code Online (Sandbox Code Playgroud)
作为奖励有没有人知道Opera的供应商前缀?
我正在寻找为我Exceptions目前正在进行的项目实现自己的一套.该项目依赖于具有基本框架异常的核心框架MyFrameworkException(我也在编写此框架).
对于任何给定的项目,我想抛出几种不同的类型,Exceptions我无法决定使用多个子类或单个子类与某种形式的Enum构造函数参数.
在这两种情况下我都有:
public class MyFrameworkException extends Exception { /*...*/ }
Run Code Online (Sandbox Code Playgroud)
选项1:
public class MyProjectBaseException extends MyFrameworkException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
Run Code Online (Sandbox Code Playgroud)
然后,在整个项目中,我会针对发生的任何问题抛出特定的异常.
选项2:
public class MyProjectException extends MyFrameworkException {
public static enum Type {
SpecificType1, SpecificType2, SpecificType3
}
public MyProjectException( Type type ) { /*...*/ }
}
Run Code Online (Sandbox Code Playgroud)
MyProjectException对于发生的任何问题,我总是会抛出特定的枚举类型.我提供了一些机制,以便可以 …
我正在尝试创建一个应用程序来从Windows框中分离辅助监视器(长篇故事).
以下是我用作基础的Microsoft示例代码:http: //support.microsoft.com/kb/308216/en-us
这是我的代码:
#include <iostream>
#include <windows.h>
void DetachDisplay()
{
BOOL FoundSecondaryDisp = FALSE;
DWORD DispNum = 0;
DISPLAY_DEVICE DisplayDevice;
LONG Result;
TCHAR szTemp[200];
int i = 0;
DEVMODE defaultMode;
// initialize DisplayDevice
ZeroMemory(&DisplayDevice, sizeof(DisplayDevice));
DisplayDevice.cb = sizeof(DisplayDevice);
// get all display devices
while (EnumDisplayDevices(NULL, DispNum, &DisplayDevice, 0))
{
ZeroMemory(&defaultMode, sizeof(DEVMODE));
defaultMode.dmSize = sizeof(DEVMODE);
if ( !EnumDisplaySettings((LPSTR)DisplayDevice.DeviceName, ENUM_REGISTRY_SETTINGS, &defaultMode) )
OutputDebugString("Store default failed\n");
if ((DisplayDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) &&
!(DisplayDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE))
{
DEVMODE DevMode;
ZeroMemory(&DevMode, sizeof(DevMode));
DevMode.dmSize …Run Code Online (Sandbox Code Playgroud) 我有以下内容:
Color color = Colors.Red;
color.ToString();
Run Code Online (Sandbox Code Playgroud)
以十六进制表示形式输出.有没有办法输出"红色"?
奖金指向任何人提供适用于不同文化的解决方案(即输出西班牙语的"Rojo").
我正在使用Visual Studio 2008.对于下面的代码
double main()
{
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
错误C3874:'main'的返回类型应为'int'而不是'double'
但如果我使用下面的代码
char main()
{
}
Run Code Online (Sandbox Code Playgroud)
没有错误.运行并退出输出窗口后显示
程序'[5856] test2.exe:Native'已退出,代码为-858993664(0xcccccc00).
问题:编译器是否从默认返回值零(整数)到char进行隐式转换?
如何生成代码0xcccccc00?
看起来该代码中的最后一个字节似乎是实际的返回值.为什么0xcccccc即将到来?
如何向网格添加自定义属性?
jqGrid本身不会使用这些属性.它更多的是我们的自定义代码将使用的元数据.
例如,我们想要一个自定义属性来识别网格是否出现在我们的"主页"上.这个属性将由我们的一些常见函数读取,这些函数将根据网格是否在主页面上以不同方式处理某些任务.
你能做的事情如下:
mygrid.onMainPage = true;
Run Code Online (Sandbox Code Playgroud)
?? 不确定这是有效的JavaScript还是会搞砸jqGrid.
可能重复:
指向特定固定地址的指针
关于这一点的有趣讨论从这里开始,但没有人能够提供C++的做法:
#include <stdio.h>
int main(void)
{
int* address = (int *)0x604769;
printf("Memory address is: 0x%p\n", address);
*address = 0xdead;
printf("Content of the address is: 0x%p\n", *address);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在C++中做这样事情最合适的方法是什么?