草庐IT

some_obj

全部标签

c++ - [C++ 编译时断言] : Can we throw a compilation error if some condition is not met?

我写了一个函数:templatevoidtryHarder(){for(inti=0;i但我只希望它在N介于0和10之间时编译。我可以这样做吗?怎么办? 最佳答案 您可以使用static_assertdeclaration来完成:templatevoidtryHarder(){static_assert(N>=0&&N此功能仅在C++11之后可用。如果您坚持使用C++03,请查看Boost'sstaticassertmacro.整个想法都是很好的错误信息。如果您不关心这些,或者甚至负担不起boost,您可以执行以下操作:templa

c++ - .lib 和 .obj 彼此之间以及我在 C++ 中的项目之间的关系是什么?

.lib和.obj文件如何相互关联?他们的目的是什么?.lib只是.obj文件的集合吗?如果是这样,那么.obj是否存储在.lib中,从而使.obj变得不必要? 最佳答案 通常,.obj文件指的是目标文件。这是已编译形式的源文件。例如,main.cpp和foo.cpp将生成main.obj和foo.obj。然后链接器将它们链接在一起,这样main.obj就可以访问foo.obj中定义的函数,反之亦然。链接器将输出你的二进制文件,即.lib(或.a,或.exe,或.dll``等).因此,从广义上讲,是的,二进制输出(在您的情况下为.l

c++ - 如何将 .obj 文件包含到项目中

我有以下问题:我被赋予了任务——构建一个应用程序。有一个现成的文件counter.h和一些其他文件-counter.obj。事实证明,在counter.h中只有函数声明-如何将.obj文件包含到.cpp文件中以便编译?我正在使用MicrosoftVisualStudio2010-文件本身应该放在哪个文件夹中? 最佳答案 将obj文件添加到解决方案中,就像您对cpp文件所做的那样(我通常通过拖放来完成此操作,即将文件从Windows资源管理器中拖放到项目中解决方案资源管理器窗口)。您可以将obj文件与cpp文件放在一起;这并不重要。

c++ - 在波前对象文件 (.obj) 中,我应该如何在 opengl 中渲染具有 4 个以上顶点的面?

所以使用Wavefrontobjectfile我应该如何在OpenGL中渲染具有4个以上顶点的面?我知道如果它有3个顶点我使用GL_TRIANGLES,如果它有4个我使用GL_QUADS,但如果它有5个或更多,我应该怎么办利用?有标准吗? 最佳答案 首先,您应该告诉任何导出工具不要导出具有那么多顶点的面。面应该有3个顶点,句点。如果您的导出工具无法做到这一点,那么您的加载工具应该将多边形分解为3个顶点面。我相当确定theAssetImporterlibrary可以做到这一点。 关于c++

c++ - '从 some_type** 到 const some_type** 的无效转换'

我有一个函数需要constsome_type**作为参数(some_type是一个结构,函数需要一个指向这种类型数组的指针).我声明了一个some_type*类型的局部变量,并对其进行了初始化。然后我将该函数称为f(&some_array),编译器(gcc)说:error:invalidconversionfrom‘some_type**’to‘constsome_type**’这里有什么问题?为什么我不能将变量转换为常量? 最佳答案 参见:Whycan'tIpassachar**toafunctionwhichexpectsaco

c++ - 什么叫表达式 `T (&some(...)) [2]` where T=char

我在库实现中看到过这个表达式,我基本上理解它被用来培养SFINAE甚至拉动static_assert触发器。它基本上采用以下形式:templatechar(&checkValid(...))[2];templatecharcheckValid(e);whereeisanexpression(usingtypeT)resultsintypeX如果e格式正确则结果将是(假设使用sizeof)1else2并且可以应用于:static_assert(sizeof(checkValid(0))==1,"");前几天我以不同的方式做了类似的事情:usingnamespacestd;template

c++ - 如何摆脱这个错误 : "MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup"

我正在帮助一位friend学习C++,但老实说,我们需要很大的帮助。为什么我们总是得到这个错误:“MSVCRTD.lib(crtexe.obj):errorLNK2019:unresolvedexternal符号main在函数__tmainCRTStartup中引用”代码如下://MariaDelgado(1013725)-Coursework2-ProgramConductingtimbercomponentstructuraldesign#include#include#include#include#includeusingnamespacestd;//VariablesforS

c++ - 当对象同时提供 `operator!` 和 `operator bool` 时,在表达式 `!obj` 中使用?

我遇到了一个我自己无法回答的问题。另外,我在谷歌和这里都没有找到这个问题的答案。比如说,我想在if子句中“检查对象的有效性”,如下所示:MyClassmyObject;//[somecode,ifany]if(!myObject){//[dosomething]}让MyClass定义如下:classMyClass{public:MyClass(){};virtual~MyClass(){};booloperator!(){return!myBool;};operatorbool(){returnmyBool;};private:boolmyBool=0;};我现在的问题是:这个if子句

c++ - 海森堡 : WinApi program crashes on some computers

求助!我真是无计可施了。我的程序是一个小的个人笔记管理器(谷歌搜索“cintanotes”)。在某些计算机上(当然我不拥有它们)它在启动后立即崩溃并出现未处理的异常。这些计算机没有什么特别之处,只是它们往往配备AMDCPU。环境:WindowsXP、VisualC++2005/2008、原始WinApi。关于这个“Heisenbug”,可以肯定的是:1)崩溃仅发生在Release版本中。2)一旦我删除了所有与GDI相关的内容,崩溃就会消失。3)BoundChecker没有任何提示。4)写日志显示崩溃发生在局部int变量的声明上!怎么可能呢?内存损坏?任何想法将不胜感激!更新:我已经成功

c++ - 与 VS6 相比,VS2008 C++ 编译中的巨大 OBJ 文件

我们有一个大型项目,超过100万行代码包含大约300个DLL。到目前为止,我们一直在使用VS6。我现在已经将所有内容转换为VS2008,包括所有编译、链接以及更重要的-运行!==>但是...生成的编译OBJ文件大了10倍并且链接非常慢,链接器经常占用>1GB的内存。部分含义是我需要使用/bigobj编译某些项目。结果是从桌面上的大约1:45到3小时的构建。DLL和LIB的大小与旧VS6版本中的大小大致相同。我已经阅读了所有我能在这里找到的内容,但没有找到解决这个问题的方法。如果它是额外的DEBUG信息-我不想要它。我以前受够了。版本中的大小增加了,但没有那么多......有人知道吗?还