Follow Excellent, Success will Chase you

0%

vs与gcc编译器之间的差别

最近在做一些移植的工作时,相同的代码使用gcc编译全部正常。但是在windows下使用VS2019进行编译时,出现一些语法错误,主要有下面几种:

“void *”: unknown size

1
2
3
4
5
6
void shuffle(void *arr, size_t n, size_t size)
{
...
memcpy(arr+(i*size), swp, size);
...
}

void *执行指针算术运算,因为void没有定义大小,进行偏移操作无法确定偏移的单位,因此出现错误提示

1
memcpy((char*)arr+(i*size), swp,  size);

:这种修改解决了编译报错的问题,但是与gcc的编译不兼容

small关键字

在编译的代码中定义了small变量名,但是其在VS中属于一个关键字,是char类型的别名

在头文件#include <windows.h>中包含的<rpcndr.h>头文件中定义了small

1
#define small char

解决方法:

  1. samll的定义去掉:#undef small
  2. 修改代码small变量名

参考

-------------本文结束感谢您的阅读-------------
  • 本文作者: Winddoing
  • 本文链接: https://winddoing.github.io/post/2f341d0b.html
  • 作者声明: 本博文为个人笔记, 由于个人能力有限,难免出现错误,欢迎大家批评指正。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!