问题列表 - 第1692页

如何将C bitflag枚举转换为C++?

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++,所以我在运行时和开发人员时间都在寻找有效的翻译.只需在所有适当位置插入演员阵容可能需要数周时间.

c c++ enums flags

3
推荐指数
1
解决办法
945
查看次数

脆弱的单元测试总是一件坏事吗?

有时我发现一个非常脆弱的测试是一件好事,因为当我改变测试代码的意图时,我想确保我的单元测试中断,以便我被迫重构...这种方法不推荐建立一大套回归测试?

unit-testing

13
推荐指数
5
解决办法
4600
查看次数

scp来自java

通过Java编程语言执行scp传输的最佳方法是什么?我似乎可以通过JSSE,JSch或充气城堡java库来执行此操作.这些解决方案似乎都没有一个简单的答案.

java scp bouncycastle jsse jsch

78
推荐指数
5
解决办法
9万
查看次数

将C源转换为C++

您如何将一个相当大(> 300K),相当成熟的C代码库转换为C++?

CI的类型被分为大致对应于模块的文件(即,比典型的基于OO类的分解更少的粒度),使用内部链接代替私有函数和数据,以及公共函数和数据的外部链接.全局变量广泛用于模块之间的通信.有一个非常广泛的集成测试套件,但没有单元(即模块)级别测试.

我想到了一个总体战略:

  1. 在C++的C子集中编译所有内容并使其正常工作.
  2. 将模块转换为大型类,以便所有交叉引用都由类名限定,但将所有函数和数据保留为静态成员,并使其工作.
  3. 使用适当的构造函数和初始化的交叉引用将巨大的类转换为实例; 根据需要使用间接访问替换静态成员访问; 让它工作.
  4. 现在,将项目作为一个错误的OO应用程序来处理,并编写单元测试,其中依赖项是易处理的,并分解为不属于它们的单独类; 这里的目标是在每次转型时从一个工作计划转移到另一个工作计划.

显然,这将是相当多的工作.关于这种翻译,是否有任何案例研究/战争故事?替代策略?其他有用的建议?

注1:程序是一个编译器,可能数以百万计的其他程序依赖于它的行为不会改变,所以批量重写几乎不是一个选择.

注2:来源近20年,每年可能有30%的代码流失(线路修改+增加/以前的总线路).换句话说,它被大量维护和扩展.因此,其中一个目标是增加可持续性.

[为了这个问题,假设转换为C++是强制性的,而将它留在C中则不是一种选择.添加这个条件的重点是清除"留在C中"的答案.]

c c++ legacy refactoring program-transformation

41
推荐指数
4
解决办法
3万
查看次数

如何在Web开发中选择颜色

当我构建一个网站时,我倾向于在Paint.NET中做一些图形设计(开发人员风格),但我怎么知道颜色会在不同机器上的所有浏览器上正确显示?您通常编码的颜色深度是多少?16位256色等

css duplication colors styling

3
推荐指数
2
解决办法
856
查看次数

如何在Windows窗体上显示必填字段

我应该如何向用户显示Windows窗体应用程序中必须使用哪些字段.

我考虑过更改标签颜色或文本框的背景颜色.

我使用错误提供程序在字段旁边显示一个红色感叹号,但只有在单击保存按钮后才会显示.

.net c# windows winforms

8
推荐指数
1
解决办法
4501
查看次数

有没有Ruby .NET编译器?

是否有用于Ruby语言的.NET Framework编译器?我听说过DLR(动态语言运行时),这是否可以让Ruby与.NET开发一起使用?

.net ruby compiler-construction

5
推荐指数
1
解决办法
489
查看次数

如何在绑定到DataTable的ComboBox中插入"Empty"字段

我在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的土地,我决定不指定单个答案,因为它们都有其领域背景的优点.感谢您的集体投入.

c# combobox

18
推荐指数
3
解决办法
6万
查看次数

我应该使用什么Linux shell?

我用过bash,csh和tcsh.但我问了这个问题,Jonathan告诉我csh不值得信任.那么Linux shell有利于开发.为什么?

linux shell

56
推荐指数
8
解决办法
6万
查看次数

继承css属性

我只有css的基本知识,是否可以将属性从一种样式继承到另一种样式.因此,例如,我可以将我的默认paragrah标记设置中指定的字体大小继承到我的超链接标记中.

我想这样做的原因是为了更容易维护多种样式.

css styling

7
推荐指数
1
解决办法
8216
查看次数