当我编译混合了 C
和 C++
的项目时,我遇到了这个错误(在编译 C++ 文件时出现):
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h:
In function ‘int std::__convert_from_v(__locale_struct* const&, char*, int, const char*, ...)’:
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h:70:3:
sorry, unimplemented:
function ‘int std::__convert_from_v(__locale_struct* const&, char*, int, const char*, ...)’
can never be inlined because it uses variable argument lists
编译结束了。
但是当我手动编辑文件
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h
并删除 __convert_from_v
前面的 inline
修饰符后,它能够运行。
导致问题的函数头原本带有 inline
:
inline int
__convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)),
char* __out,
const int __size __attribute__ ((__unused__)),
const char* __fmt, ...)
我认为这样的函数不应该标记为inline
。这是一个bug还是我做错了什么?[gcc 4.6.1,Ubuntu 11.10]