我保持一个跨平台的C代码库和一些平台(的Xcode 4,红帽衍生像Fedora和Mageia发行版),我得到以下编译器错误:如何抑制阴影“索引”警告?
warning: declaration of 'index' shadows a global declaration
基于this answer,据我所知,这是因为一些基于BSD的C实现定义了string.h
中的非标准index
函数,这意味着无论何时声明index
变量,都会显示此警告。我向你保证,我没有任何全局的index
变量。
我知道我可以避免命名任何东西index
但它是一个语义上有用的名称,所以我最终使用它遍布整个地方。我知道我也可以抑制这个警告,例如在GCC中使用-Wno-shadow
,但我宁愿不全局地禁用其他有用的编译器警告。
那么我该如何解决这个问题呢?也就是说,在某种程度上可以检测到平台是否具有index
函数并仅在那里禁用警告,或者如果它存在,我该如何重新定义它?
自从Xcode 5我相信我不再在OSX中获得它。我也没有在基于Debian的Linux中看到它。 – congusbongus