关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion我有一个项目,我想在Ubuntu和Windows机器上编写代码。在Ubuntu上我使用gcc,在Windows上我想使用MSVC。像这样用2个不同的编译器编译相同的代码是个好主意吗?或者我会在未来遇到问题吗?谢谢。
我的印象是没有为C风格的字符串定义比较运算符,这就是我们使用strcmp()之类的东西的原因。因此,以下代码在C和C++中是非法的:if("foo"=="foo"){printf("TheC-stylecomparisonworked.\n");}if("foo"=="bob"){printf("TheC-stylecomparisonproducedtheincorrectanswer.\n");}else{printf("TheC-stylecomparisonworked,stringswerenotequal.\n");}但我使用GCC在Codeblocks和VS2015中测试
鉴于以下情况:包含数千个C++源文件的大型项目没有通用的头文件(没有一个头文件包含在每个源文件中)该项目使用g++编译,make管理有没有办法在不修改每个源文件以包含新头文件的情况下将定义(例如宏)包含到每个编译单元中? 最佳答案 来自mangcc:-includefileProcessfileasif"#include"file""appearedasthefirstlineoftheprimarysourcefile.However,thefirstdirectorysearchedforfileisthepreprocesso
这个C++指令是做什么的:“#pragmaGCCsystem_header”? 最佳答案 我用谷歌搜索得到this:#pragmaGCCsystem_headerThispragmatakesnoarguments.Itcausestherestofthecodeinthecurrentfiletobetreatedasifitcamefromasystemheader.Section2.7SystemHeaders.MoreinfoonSystemheaders2.7.SystemHeadersTheheaderfilesdecl
为了编译我的C++代码,我使用了-W标志,这会导致警告:warning:comparisonofunsignedexpression我认为这被认为是一个错误并已在GCC4.3版本中修复,但我使用的是GCC4.1这里明显有问题的代码:voidFieldGroup::generateCreateMessage(constApiEvent::GroupData&data,omsgstream&result)const{dblog=data.fields.length()){ostringstreambuf;buf警告我得到:dbtempl.cpp:Inmemberfunction‘voidE
当你在C中看到这样的代码时,赋值顺序是什么?inti=0,var1,var2;我不明白语法... 最佳答案 只有i被赋值为零。var1和var2未初始化。 关于c++-int的C赋值,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4061696/
我的一些C程序没有按预期工作。例如,通过引用传递在C中是不可能的,但是当我编写一个使用它的C程序并使用gcc编译它时它工作正常。gcc是C++编译器吗?如何使其表现得像C编译器? 最佳答案 gcc、g++和其他前端使用文件名来确定语言。例如,gcc和g++之间唯一的主要区别是对新的C++程序员的影响:不同的链接设置(针对C++stdlib)。如果您的文件被误检测,请使用-x选项(也可能是-std)明确指定。或者遵循gcc对文件名使用的通用命名约定。对于C,这意味着*.c。仔细检查您没有使用大写/大写*.C来命名您的文件;被检测为C+
我发现了一个有趣的案例,即相同的C++代码在不同的系统上产生不同的结果。#includeintmain(){inta=20,b=14;if(a*1.0/b*(a+1)/(b+1)==2)printf("YES!");elseprintf("NO!");}使用GCC4.6.3在UbuntuLinux12.04上编译它输出YES!使用GCC4.6.2在Windows7上编译它输出NO!但是,使用:doublec=a*1.0/b*(a+1)/(b+1);if(c==2)printf("YES!");...将在两台机器上返回YES!。知道为什么会出现这种差异吗?这是由编译器版本不匹配引起的吗(
我正在尝试在繁重的计算应用程序中优化这类事情:说我有一个doubled[500][500][500][500];至少从编译器的角度来看,以下是相当昂贵的doubled[x][y][j][k]我想告诉编译器它是连续的内存,以方便计算偏移量。在我的例子中,我有这样的东西:doublen=0;for(inti=0;i所以我试图通过将它放在一个单独的函数中来优化它voidfunc(double***constrestrictdMatrix){/*anddosomecalculationsherel*/}没有太大帮助:(有什么优化建议吗?编辑我无法重写代码使数组成为一维。我必须和这个多维的野兽一
我是C++的新手,我想编译我的测试程序。我现在有3个文件"main.cpp""parse.cpp""parse.h"如何用一条命令编译它? 最佳答案 同时编译它们并将结果放入a.out$g++file.cppother.cpp同时编译它们并将结果放入prog2$g++file.cppother.cpp-oprog2分别编译每个,然后将它们链接到a.out$g++-cfile.cpp$g++-cother.cpp$g++file.oother.o分别编译,然后链接到prog2$g++-cfile.cpp$g++-cother.cpp$