首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

C#项目转C++项目

C#项目转C++项目

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

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

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

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

4)VS2013 C++程序的默认堆栈大小为1MB,太小,有时候会堆栈溢出,可以参考  

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);
返回列表