可能的重复:
当我们定义一个宏时,do(0)有什么用?
为什么在C/C++宏中有时会出现无意义的do/while和if/else语句?
做{...}而(0)有什么好处?
我已经看到一些包含在do/while(0)循环中的多行C宏,如:
#define FOO \
do { \
do_stuff_here \
do_more_stuff \
} while (0)
与使用基本块相反,以这种方式编写代码有什么好处(如果有的话):
#define FOO \
{ \
do_stuff_here \
do_more_stuff \
}
我之前在墙上碰到了我的头,因为我在使用c/c ++时没有进行任何测试课程(但是有很多打印方法).
在c/c ++代码中执行测试的最常用方法是什么?Java的JUnit在调试时给我留下了美好的回忆.
我知道在代码中使用带有定义的调试头的断言应该有效,但是没有更好的方法吗?
由于我打算将来进行测试课程,所以欢迎任何有用的提示.
我有一个我为自定义文件类型构建的语言服务.
另外,我在MSBuild项目文件中创建了一个自定义目标(构建操作).但是,我无法找到任何方法将默认情况下的构建操作关联到我的自定义文件扩展名.
例如,如果添加.cs文件,则构建操作默认为"compile".我想为我做同样的事情.即在添加.dsl文件时,我希望构建操作为"Generate",这是我的自定义目标(因此构建操作).
有没有使用项目向导的方法?
我正在用C#写一个麻将游戏(中国传统游戏,不是纸牌游戏).在为机器人播放器的AI编写代码时,我想知道像F#这样的函数式语言是否比我目前使用的语言更合适,而C#中有很多Linq.我不太了解F#,这就是我在这里问的原因.
为了说明我试图解决的问题,这里是麻将的简要总结:
麻将有点像Gin Rummy.你手上有13块瓷砖,每转一圈,你画一块瓷砖并丢弃另一块瓷砖,试图改善你的手牌,以获得麻将牌,包括4套和一对.集合可以是3种(pungs),4种(kongs)或3种连续瓦片(chows)的序列.你也可以偷走另一个玩家的丢弃,如果它可以完成你的一套.
我必须写的代码来检测机器人是否可以声明3个连续的瓷砖集(chow)是相当繁琐的.我必须找到手中所有独特的瓷砖,然后开始检查手中是否有一个包含3个瓷砖的序列.检测机器人是否可以去麻将更加复杂,因为它是检测他手中是否有4组和一对的组合.而这只是一个标准的麻将牌.还有许多"特殊"牌可以打破这些规则,但仍然是麻将牌.例如,"13个独特的奇迹"由13个特定的瓷砖组成,"玉帝国"仅由绿色瓷砖等组成.
在一个完美的世界里,我希望能够简单地陈述麻将的"规则",并且让语言能够将一组13个区块与这些规则相匹配,以检索它实现的规则,例如,检查是否它是一个麻将手或者它包括4种类型.这是F#的模式匹配功能可以帮助解决的吗?
如何在ASP.NET中使用Windows身份验证时注销,如此web.config?
<authentication mode="Windows" />
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下尝试失败了.它重定向,但不会注销用户.
void logoutButton_Click(object sender, EventArgs e) {
HttpContext.Current.Session.Clear();
HttpContext.Current.Session.Abandon();
ViewState.Clear();
FormsAuthentication.SignOut();
Response.Redirect("/");
}
Run Code Online (Sandbox Code Playgroud)
背景资料:
我必须使用Windows身份验证,因为我需要使用Active Directory模拟身份以获取对本地文件的访问权限.而且我无法模仿使用Forms身份验证,因为它HttpContext.Current.User.Identity不会是一个WindowsIdentity.
使用表单身份验证进行模拟
我正在使用LINQ to SQL的简单实体类(SQL Server 2005 SP3 x64).
[Table( Name="TBL_REGISTRATION" )]
public sealed class Registration : IDataErrorInfo
{
[Column( Name = "TBL_REGISTRATION_PK", IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert )]
public Guid RegistrationID { get; private set; }
/* other properties ommited for brevity */
}
Run Code Online (Sandbox Code Playgroud)
这里只有两件有趣的事情:
这是表格的样子:
create table dbo.TBL_REGISTRATION
(
TBL_REGISTRATION_PK uniqueidentifier primary key clustered
rowguidcol
default newid(),
/* other columns ommited for brevity */
)
Run Code Online (Sandbox Code Playgroud)
当我将此实体附加到我的表并在我的DataContext上提交更改时,LINQ堆栈会抛出一个SqlException:
SqlException(0x80131904):无效的列名'RegistrationID'
LINQ似乎忽略了我的RegistrationID属性上的Column(Name ="TBL_REGISTRATION_PK")属性.我花了一些时间用不同的属性装饰试图让它工作.最后,我决定使用私有TBL_REGISTRATION_PK属性来包装我的RegistrationID属性以使LINQ满意.
[Table( Name="TBL_REGISTRATION" )]
public sealed …Run Code Online (Sandbox Code Playgroud) 我想从C++库生成C包装器.有关如何手动完成的教程:
但这太过于体力劳动.
例如,为此:
struct RtAudio {
virtual DeviceInfo const& f() {...}
class DeviceInfo {
virtual void g() { ... }
};
...
};
Run Code Online (Sandbox Code Playgroud)
我需要写:
struct RtAudioC {
RtAudio x;
};
struct DeviceInfo {
RtAudio::DeviceInfo x;
};
extern "C" {
RtAudioC* newRtAudio() {
return new RtAudioC;
}
void deleteRtAudio(RtAudioC *p {
delete p;
}
/* do something with RtAudio::f() */
void g(DeviceInfo *p) {
try {
p->x.g();
} catch (SomeError & err) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否有可以自动执行此过程的工具?
我有一组响应mouseUp事件的元素,并且它们内部也是响应mouseUp事件的子元素(所有通过.jQuery).如何在用户鼠标单击时发生孩子的mouseUp事件时,jQuery中也不会出现孩子的父母的mouseUp事件?
我有一个具有属性Value的类,如下所示:
public class MyClass {
public property var Value { get; set; }
....
}
Run Code Online (Sandbox Code Playgroud)
我想使用MethodInfo.Invoke()来设置属性值.以下是一些代码:
object o;
// use CodeDom to get instance of a dynamically built MyClass to o, codes omitted
Type type = o.GetType();
MethodInfo mi = type.GetProperty("Value");
mi.Invoke(o, new object[] {23}); // Set Value to 23?
Run Code Online (Sandbox Code Playgroud)
我现在无法访问我的工作.我的问题是如何使用23等整数值设置Value?
我已经创建了一个查询,通过使用此查询将生产数据分组到ISO周
SELECT to_char(wid_date,'IYYY'), to_char(wid_date,'IW'), tonnes
FROM production
WHERE to_char(wid_date,'IYYY') = '2009'
GROUP BY to_char(wid_date,'IYYY'), to_char(wid_date,'IW')
Run Code Online (Sandbox Code Playgroud)
问题是我们的"生产周"不符合ISO标准.他们从周一早上07:00:00到周一早上06:59:59.
有关如何使用我们的生产周报告的任何建议?
谢天谢地,
汤米