最佳实践:C#项目转C++项目

最近在把一个C#项目转到C++项目,下面整理下C#和C++不同的地方,给各位个参考,避免入坑:

1)默认对象赋值方式不同,所以修改时要多加注意。具体参考 https://bbs.csdn.net/topics/392440547

2)类的变量默认值不同 .net默认是类型的默认值,C++没有默认值的。要避免C++的类成员没有默认值的意外行为。

3)a[i][j]和a[i,j]是不相同的。

4)VS2013 C++程序的默认堆栈大小为1MB,太小,有时候会堆栈溢出,可以参考 https://blog.csdn.net/feeltouch/article/details/9400095

5)std::remove不能从vector中移除元素,需要配合erase使用。

6)VS2013C++工程调试时看不到局部变量的值:设置问题项目右键属性打开后--Configuration Properties --->c/c++ ---->  Optimization下面选择第一项选Disabled(/od)

7)C++浮点数在计算过程中保留有效数字,可以使用如下代码,但是耗时较多

double round(double number, unsigned int bits) {
    stringstream ss;
    ss << fixed << setprecision(bits) << number;
    ss >> number;
    return number;
}

8)C#项目怎么来调用C++的动态库:

这里的result是C++动态库传出的参数,在C#里面用StringBuilder来接受,在C#里面调用GetProvincePrice时,提前给StringBuilder申请好空间。

bool GetProvincePrice(char * param_string, char * result);
[DllImport("CPlusPlus.dll", EntryPoint = "GetProvincePrice", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
        public extern static bool GetProvincePrice(string exlist, StringBuilder result);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值