Gel*_*tor 8 c++ standards compiler-errors visual-c++
我正在尝试构建,使用msvs 2010在以下git中找到的项目:
https://github.com/Joonhwan/exprtk
问题是当我在exprtk.hpp文件中注释掉48行'#define exprtk_lean_and_mean'时,我得到以下编译器错误:
Error 1 error C1128: number of sections exceeded object file format limit : compile with /bigobj
Run Code Online (Sandbox Code Playgroud)
谷歌搜索错误,似乎表明编译的翻译单元已编译为大于仲裁限制的东西,并且在命令行中添加'bigobj'应该解决问题(它会这样做).使用gcc(4.3)编译代码,没有任何故障.
我的问题是:
c ++是否限制了翻译单元中可以使用的类型数量?
代码在这个项目中的布局方式是不好的做法?(谷歌搜索时我注意到很多boost库都有同样的问题,例如:Boost.Sprit)
Alo*_*ave 14
c ++是否限制了翻译单元中可以使用的类型数量?
请注意,对于特定实现,此类参数的最大值保持打开状态.该标准仅强制实施必须支持的最低要求.实现将记录它支持的最大值,在这种情况下,MSVC实现会这样做.
这些是在C++标准的特殊部分中定义的.
附件B - 实施数量
由于计算机是有限的,因此C++实现不可避免地受限于它们可以成功处理的程序的大小.每个实施都应记录已知的限制.本文档可引用存在的固定限制,说明如何根据可用资源计算变量限制,或者说固定限制不存在或未知.
限制可能会限制包括下面描述的数量或其他数量的数量.建议将每个数量后面的括号内的数字作为该数量的最小值.但是,这些数量仅是指导原则,不能确定合规性.
- 嵌套复合语句,迭代控制结构和选择控制结构的级别[256].
- 嵌套条件包含的级别[256].
- 指针,数组和函数声明符(以任意组合)在声明中修改算术,结构,并集或不完整类型[256].
- 在完整表达式中嵌套带括号的表达式级别[256].
- 内部标识符或宏名称中的字符数[1 024].
- 外部标识符中的字符数[1 024].
- 一个翻译单位的外部标识符[65 536].
- 在一个块[1 024]中声明具有块范围的标识符.
- 在一个翻译单元中同时定义宏标识符[65 536].
- 一个函数定义[256]中的参数.
- 一个函数调用中的参数[256].**
- 一个宏定义中的参数[256].
- 一次宏调用中的参数[256].
- 一个逻辑源行中的字符[65 536].
- 字符串文字或宽字符串文字中的字符(连接后)[65 536].
- 物体的大小[262 144].
- #include文件的嵌套级别[256].
- switch语句的case标签(不包括任何嵌套switch语句的标签)[16 384].
- 单个类,结构或联合中的数据成员[16 384].
- 单个枚举中的枚举常量[4 096].
- 单个struct-declaration-list中的嵌套类,结构或联合定义的级别[256].
- 由atexit()[32]注册的函数.
- 直接和间接基类[16 384].
- 单个类的直接基类[1024].
- 成员在一个班级[4 096]中宣布.
- 最终覆盖类中的虚函数,可访问与否[16 384].
- 类的直接和间接虚拟基础[1 024].
- 类的静态成员[1 024].
- 班级中的朋友声明[4 096].
- 类[4 096]中的访问控制声明.
- 构造函数定义中的成员初始值设定项[6 144].
- 一个标识符的范围限定[256].
- 嵌套外部规范[1 024].
- 模板声明中的模板参数[1 024].
- 递归嵌套模板实例化[17].
- 每个try块的处理程序[256].
- 在单个函数声明上抛出规范[256].
| 归档时间: |
|
| 查看次数: |
4213 次 |
| 最近记录: |