最佳实践: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);

猜你喜欢

转载自blog.csdn.net/LCL_data/article/details/85247925