方法签名不匹配是否会导致运行时崩溃? 我在C++代码中有一个运行时崩溃,只有在Solaris机器SunOS 5.10 GuangiC150 400—27执行,并且使用Sun C 5.12编译器和C++ 09标准时,它才是可重复的。它不会在Windows或Linux上复制。其中一名开发人员发现,问题可能是由于某个方法的hxx和cxx文件之间的签名不匹配造成的。在匹配方法签名后创建了一个test.so,崩溃消失了

方法签名不匹配是否会导致运行时崩溃? 我在C++代码中有一个运行时崩溃,只有在Solaris机器SunOS 5.10 GuangiC150 400—27执行,并且使用Sun C 5.12编译器和C++ 09标准时,它才是可重复的。它不会在Windows或Linux上复制。其中一名开发人员发现,问题可能是由于某个方法的hxx和cxx文件之间的签名不匹配造成的。在匹配方法签名后创建了一个test.so,崩溃消失了,c++,C++,hxx中的声明是: string getAttributeList(void) const; cxx中的实现是: string getAttributeList() const { } 请注意,cxx文件中没有空格。据推测,这导致了一场车祸。后来,当签名匹配时,通过删除声明中的空白,崩溃消失了 我不相信这是崩溃的原因,因为这应该是一个编译时错误。但是,由于它正确地构建了,没有错误,这样的签名不匹配会导致C++中的运行时崩溃吗?您使用什么编译器和C++标准?在C++中,函数声明中的空参数列表是

hxx中的声明是:

string getAttributeList(void) const;
cxx中的实现是:

string getAttributeList() const
{
}
请注意,cxx文件中没有空格。据推测,这导致了一场车祸。后来,当签名匹配时,通过删除声明中的空白,崩溃消失了


我不相信这是崩溃的原因,因为这应该是一个编译时错误。但是,由于它正确地构建了,没有错误,这样的签名不匹配会导致C++中的运行时崩溃吗?

您使用什么编译器和C++标准?在C++中,函数声明中的空参数列表是“代码>Value<代码>的参数列表。是的,它是共享对象。更新了帖子。感谢您指出。您应该添加调用此函数的部分,或者实际上是一个适当的MCVE。const限定符不允许在自由函数上,所以这个代码根本不应该编译。@ MartinKahn:哪个编译器?你使用什么编译器和C++标准?在C++中,函数声明中的空参数列表是一个参数列表:“代码>空洞< /代码>。是的,它是共享对象。更新了帖子。感谢您指出。您应该添加调用此函数的部分,或者实际上是一个适当的MCVE。自由函数上不允许使用常量限定符,因此此代码不应编译。@MartinKahn:它是哪个编译器?