C++主要是C的超集,但并非总是如此.特别是,虽然C和C++中的枚举值都隐式转换为int,但反之则不然:只有在C中,int会转换回枚举值.因此,通过枚举声明定义的bitflags无法正常工作.因此,这在C中是可以的,但在C++中则不行:
typedef enum Foo
{
Foo_First = 1<<0,
Foo_Second = 1<<1,
} Foo;
int main(void)
{
Foo x = Foo_First | Foo_Second; // error in C++
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何有效和正确地处理这个问题,理想情况下不会损害使用Foo作为变量类型的调试器友好性质(它会分解为手表中的组件位标志等)?
还要考虑可能有数百个这样的标志枚举,以及数千个使用点.理想情况下,某种有效的运算符重载可以解决问题,但它确实应该是高效的; 我想到的应用程序是受计算限制的,并且具有快速的声誉.
澄清:我正在将一个大型(> 300K)C程序翻译成C++,所以我在运行时和开发人员时间都在寻找有效的翻译.只需在所有适当位置插入演员阵容可能需要数周时间.
有时我发现一个非常脆弱的测试是一件好事,因为当我改变测试代码的意图时,我想确保我的单元测试中断,以便我被迫重构...这种方法不推荐建立一大套回归测试?
通过Java编程语言执行scp传输的最佳方法是什么?我似乎可以通过JSSE,JSch或充气城堡java库来执行此操作.这些解决方案似乎都没有一个简单的答案.
您如何将一个相当大(> 300K),相当成熟的C代码库转换为C++?
CI的类型被分为大致对应于模块的文件(即,比典型的基于OO类的分解更少的粒度),使用内部链接代替私有函数和数据,以及公共函数和数据的外部链接.全局变量广泛用于模块之间的通信.有一个非常广泛的集成测试套件,但没有单元(即模块)级别测试.
我想到了一个总体战略:
显然,这将是相当多的工作.关于这种翻译,是否有任何案例研究/战争故事?替代策略?其他有用的建议?
注1:程序是一个编译器,可能数以百万计的其他程序依赖于它的行为不会改变,所以批量重写几乎不是一个选择.
注2:来源近20年,每年可能有30%的代码流失(线路修改+增加/以前的总线路).换句话说,它被大量维护和扩展.因此,其中一个目标是增加可持续性.
[为了这个问题,假设转换为C++是强制性的,而将它留在C中则不是一种选择.添加这个条件的重点是清除"留在C中"的答案.]
当我构建一个网站时,我倾向于在Paint.NET中做一些图形设计(开发人员风格),但我怎么知道颜色会在不同机器上的所有浏览器上正确显示?您通常编码的颜色深度是多少?16位256色等
我应该如何向用户显示Windows窗体应用程序中必须使用哪些字段.
我考虑过更改标签颜色或文本框的背景颜色.
我使用错误提供程序在字段旁边显示一个红色感叹号,但只有在单击保存按钮后才会显示.
是否有用于Ruby语言的.NET Framework编译器?我听说过DLR(动态语言运行时),这是否可以让Ruby与.NET开发一起使用?
我在WinForms应用程序上有一个组合框,其中可以选择一个项目,但它不是必需的.因此,我需要一个'Empty'第一项来表示没有设置任何值.
组合框绑定到从存储过程返回的DataTable(我没有在我的UI控件上为匈牙利表示法道歉:p):
DataTable hierarchies = _database.GetAvailableHierarchies(cmbDataDefinition.SelectedValue.ToString()).Copy();//Calls SP
cmbHierarchies.DataSource = hierarchies;
cmbHierarchies.ValueMember = "guid";
cmbHierarchies.DisplayMember = "ObjectLogicalName";
Run Code Online (Sandbox Code Playgroud)
我怎么能插入这样一个空项目?
我有权更改SP,但我真的不想用UI逻辑"污染"它.
更新:这是我已经空白的DataTable.NewRow(),谢谢.我已经对你进行了修改(无论如何都是3个答案).在决定'回答'之前,我试图让迭代器模式工作
更新:我认为这个编辑让我进入了社区Wiki的土地,我决定不指定单个答案,因为它们都有其领域背景的优点.感谢您的集体投入.
我用过bash,csh和tcsh.但我问了这个问题,Jonathan告诉我csh不值得信任.那么Linux shell有利于开发.为什么?
我只有css的基本知识,是否可以将属性从一种样式继承到另一种样式.因此,例如,我可以将我的默认paragrah标记设置中指定的字体大小继承到我的超链接标记中.
我想这样做的原因是为了更容易维护多种样式.