small做关键字怎么不告诉我(转)

在windows下使用lapack遇到了个问题,编译报这样的错:

……/clapack.h(3592) : error C2144: syntax error : ‘char ‘ should be preceded by ‘) ‘
……/clapack.h(3592) : error C2144: syntax error : ‘char ‘ should be preceded by ‘; ‘
……/clapack.h(3592) : error C2143: syntax error : missing ‘; ‘ before ‘, ‘
……/clapack.h(3592) : error C2059: syntax error : ‘, ‘
……/clapack.h(3592) : error C2059: syntax error : ‘) ‘

错误内容指向这两行:

/* Subroutine */ int dlabad_(doublereal *small, doublereal *large);
/* Subroutine */ int slabad_(real *small, real *large);

这是怎么回事,lapack的头文件有问题?不会是我无意中按到键盘了吧。仔细检查一遍,没有这些问题啊,怎么会出现这种编译错误。无奈求助google大神,发现了问题的症结:

Microsoft SDK中有个头文件叫做 RpcNdr.h,其中有一句 #define small char

知道问题原因就好办了,直接把上述声明中small改掉即可。

我的疑问就是怎么能用small这么常用的一个短语作为关键字而不告诉我呢?或者我太土不知道?

(摘自:http://www.lixiaoyong.net/blog/?p=226)

你可能感兴趣的:(c,windows,Google,Microsoft,subroutine)