如何编辑 Microsoft Visual Studio 2013 编译器开关? [复制]

Posted

技术标签:

【中文标题】如何编辑 Microsoft Visual Studio 2013 编译器开关? [复制]【英文标题】:How do I edit Microsoft Visual Studio 2013 Compiler switches? [duplicate] 【发布时间】:2013-12-19 21:29:47 【问题描述】:

这个问题与其他关于 /bigobj 问题的帖子类似,但是,这些问题通常没有直接解决编译器选项。这专门回答了编译器选项的一般问题,并处理了特定编译器选项的单独问题,甚至进一步链接其他类似问题,以便比其他问题更容易找到。

我需要初始化一个包含超过 16641 个元素的结构。

    #include "stdafx.h"
    #include <iostream>

    struct ArtificialIdiocy
        double x, y, z;
        double nx, ny, nz;
    ;

    int _tmain(int argc, _TCHAR* argv[])
        ArtificialIdiocy objectArray[16641];

        objectArray[0].x = 1.012709;
        objectArray[0].y = 0.069911;
        objectArray[0].z = 1.010933;
        objectArray[0].nx = 0.165410;
        objectArray[0].ny = 0.883572;
        objectArray[0].nz = -0.438063;

        objectArray[1].x = -1.000000;
        objectArray[1].y = 0.014457;
        objectArray[1].z = 1.000000;
        objectArray[1].nx = 0.179296;
        objectArray[1].ny = 0.883511;
        objectArray[1].nz = -0.432661;

        objectArray[2].x = 1.000693;
        objectArray[2].y = 0.011744;
        objectArray[2].z = -1.000509;
        objectArray[2].nx = 0.172582;
        objectArray[2].ny = 0.897122;
        objectArray[2].nz = -0.406629;

// 以此类推,以此类推....

        objectArray[16638].x = 0.969018;
        objectArray[16638].y = 0.116736;
        objectArray[16638].z = 0.967181;
        objectArray[16638].nx = 0.437513;
        objectArray[16638].ny = 0.782861;
        objectArray[16638].nz = 0.442335;

        objectArray[16639].x = 0.968575;
        objectArray[16639].y = 0.105999;
        objectArray[16639].z = 0.998326;
        objectArray[16639].nx = 0.561235;
        objectArray[16639].ny = 0.718528;
        objectArray[16639].nz = 0.410718;

        objectArray[16640].x = 0.999139;
        objectArray[16640].y = 0.089730;
        objectArray[16640].z = 0.997266;
        objectArray[16640].nx = 0.608631;
        objectArray[16640].ny = 0.688559;
        objectArray[16640].nz = 0.394208;

但 MSVS2013 编译器告诉我,我的结构有很多部分并退出并显示错误:

错误 1 ​​错误 C1128:节数超出目标文件格式限制:使用 /bigobj 编译

如何编辑/添加“/bigobj”编译器开关?

【问题讨论】:

老实说,这看起来像是一场等待在 Daily WTF 上结束的维护噩梦。您至少应该将其移至在运行时加载的外部资源。 @The Forest And The Trees 我不打算在完整的程序中使用它。这只是最基本问题的一个例子。 :P 我不想在示例中添加很多其他代码,因为这会使潜在的新程序员混淆问题。在实际操作中,我打算将其作为更大结构中构造函数的一部分,该结构存储在单独的头文件中。每个字符、对象等都将从这个头文件中初始化。 问题的主要部分可能是在堆栈上放置了一个 780KB 的数组,而 1024KB 是一个常见的堆栈限制。 @Mooing Duck 我应该如何处理初始化这样的大对象呢?我将从它创建一个缓冲区对象,然后释放内存。我还有什么其他方法可以处理它? 要么把它放在全局内存中(或多或少地初始化),要么放在堆上(在运行时从一些非代码资源初始化)。 【参考方案1】:

对于 MSVS Express 2013,打开您的项目“Property Pages”,转到“C/C++”树项,然后向下找到最后一个选项“命令行”。单击此按钮,然后在“其他选项”文本框中添加任何其他开关。

在这种情况下,您将添加“/bigobj”,所有小写字母。

另请参阅:

Penalty of the MSVS compiler flag /bigobj

Build issue with MSVS 2010 and the C++ standard

How to compile with /bigobj within Dymola (Modelica)

在将这个问题链接到其他人时发现以下问题:

http://msdn.microsoft.com/en-us/library/ms173499%28v=VS.100%29.aspx

http://msdn.microsoft.com/en-us/library/8578y171.aspx

【讨论】:

本题搜索优化为currently under discussion at meta

以上是关于如何编辑 Microsoft Visual Studio 2013 编译器开关? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

VisualStudio2012编辑器错误

如何设置Microsoft Visual Studio的字体大小

使用Microsoft Visual Studio编辑器遇到的问题

Microsoft Visual Studio Professional 2013,变量在哪里定义和编辑?

Microsoft Visual Studio 2022 透明背景设置

如何让Visual Studio 2008编辑SSRS 2005报表项目没有安装SQL Business Intelligence Development Studio 2005?