更新时间:2016-04-01 16:25:48浏览次数:1+次
1>src\win\fs-event.c(73): error C2275: “size_t”: 将此类型用作表达式非法
1> c:\program files\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(29) : 参见“size_t”的声明
1>src\win\fs-event.c(73): error C2146: 语法错误: 缺少“;”(在标识符“filenamelen”的前面)
1>src\win\fs-event.c(73): error C2065: “filenamelen”: 未声明的标识符
size_t dirlen = wcslen(dir);
if (dirlen > 0 && dir[dirlen - 1] == '\\')dirlen--;
size_t filenamelen = wcslen(filename);
size_t relpathlen = filenamelen - dirlen - 1;
这个问题只是冰山一角,因为C语言和C++语言不止这一处差异,所以,如果出现编译问题,记得对比C语言和C++语言的语法规范差异,就可以找到问题的所在了。
GCC编译器或者VS2015编译器都能够编译通过,说明他们都已经支持这些语言特性了。而较低版本的编译器对这些地方还是斤斤计较。
知道了问题所在,那么解决办法就好说了。我们只要按照C编译器的规定写代码即可。我们将代码调整成下面这样就可以了:
size_t dirlen = wcslen(dir);
size_t filenamelen;
size_t relpathlen;
if (dirlen > 0 && dir[dirlen - 1] == '\\')dirlen--;
filenamelen = wcslen(filename);
relpathlen = filenamelen - dirlen - 1;
然后再编译,顺利通过。有图有真相:
【VS2010顺利编译libuv】
相关资讯