gcc 4.4.7丢弃函数参数的const限定符

时间:2014-06-04 19:04:14

标签: c++ gcc c++11

我遇到了一个奇怪的问题,即gcc似乎正在更改函数签名并在parmae​​ter上丢弃const限定符。

我在声明为

的名称空间中有一个方法
namespace Foo {
    bool CompressJPEG_8(const Buffer &input,
        const unsigned int nWidth, const unsigned int nHeight,
        const unsigned int nNumComponents, Buffer &compressed);
}

gcc抱怨方法Foo::CompressJPEG_08(Foo::Buffer const& input ... )是一个未定义的引用。

当我运行nm时,在生成的目标代码上我看到:

U Foo::CompressJPEG_8(Foo::Buffer const&, unsigned int, unsigned int, unsigned int, Foo::Buffer&)
0000000000192f5c T Foo::CompressJPEG_8(Foo::Buffer&, unsigned int, unsigned int, unsigned int, Foo::Buffer&)

由于某些原因,gcc删除了第一个参数的const限定符,但我无法弄清楚原因。我怀疑这与jpeg库方法在extern" C"中声明的事实有关。 { }阻止,但我不确定原因。

0 个答案:

没有答案