是GCC错误吗?
Is it GCC error?
当编译我的项目混合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
修饰符it WORKS。
导致问题的函数头最初是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]
可能是由于优化设置或inline
的重新定义导致__convert_from_v
被内联。下面是一个模拟错误的小示例:
#define inline __always_inline
#include <bits/c++locale.h>
int main () {
__locale_t loc;
return std::__convert_from_v(loc, 0, 0, 0);
}
在ubuntu11.10上使用g++ 4.6.1编译会出现错误:
/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
所以检查你的代码重新定义inline
或尝试不同的优化设置。
我认为这个函数被标记为inline
的原因是因为它是在头中定义的。如果没有inline
,你会得到它定义在每个翻译单元,包括(通常间接)这个头。
C99之前的C没有内联关键字。检查你的编译器配置
相关文章:
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 初始化迭代器错误 C++ 在 GCC 编译器中
- GCC:随机构建导致执行期间分段错误
- 错误:使用 clang 没有可行的重载,使用 GCC 编译
- "未定义对'WinMain@16'的引用"gcc 编辑器中的错误
- 与NVIDIA链接的错误GCC版本
- std::seed_seq编译错误(GCC错误?)
- 使用 lambda 的错误 gcc 行为
- std :: sort函数上的编译器错误(GCC 4.4)
- C++ 编译错误(gcc 4.7)
- 套接字错误 gcc 无法在 WinSock2.h 中获取函数
- Linux编译错误-GCC 4.3.4-模板参数列表太少
- 如何解决在Zero C Ice编译中的upCast错误?- Gcc - 4.7使用clang编译
- GCC 6.1.0 分段错误 - GCC 错误
- std::bind 编译器错误 gcc
- VS2013过载错误(GCC不会发生)
- 使用Python.h编译错误gcc