解决办法和修改办法的总体思想
1、在代码的语义和功能不变的情况下,进行c->c++的转变,消除编译器的跨平台编译报错问题;
2、遇到编译问题,先看编译器提示信息,然后逐个排查和定位,去解决问题。
1、当遇到c中的代码,数组使用动态变量初始化在GCC能编译通过,在MSVC上编译不过的时候解决办法,例如:
原版C:
void func1(int number)
{
int a[number];
}
移植版C++
void func1(int number)
{
std::vector<int> a(number);
}
2、当遇到c中的代码,某函数在不同的.c中实现了两次,且是同样的函数名称在GCC能编译通过,在MSVC上编译不过的时候解决办法
在报错的.cpp文件中,修改该声明和实现的相同函数名称的函数为另外一个名字
3、当遇到c中的代码,某函数在.cpp和.h文件都已经声明和实现过,在另外一个.cpp中调用该函数的时候,报错该函数符号在另外一个.cpp中是外部符号,无法识别在GCC能编译通过,在MSVC上编译不过的时候解决办法
找到该项目中的所有.h 试着删掉 以下的代码片段
#ifdef __cplusplus
extern "C" {
#endif
//一段代码
#ifdef __cplusplus
}
#endif
4、当遇到c中的代码,某宏定义的函数实现 在GCC能编译通过,在MSVC上编译不过的时候解决办法
在不变语义的情况下,改为函数
原文链接:https://blog.csdn.net/djt4541/article/details/105663335