Tag: g ++

ISO C ++禁止可变大小数组(编译错误)

通常我总是这样编译我的C代码:g ++ program.c -o program.exe 但我的大学教授要求我使用以下方法编译:g ++ -o -Wall -Wextra -Werror -pedantic -std = c ++ 0x program.exe program.c (这对我来说是新的)。 所以……我运行命令并得到以下错误: eda.c: In function ‘int main()’: eda.c:200: error: ISO C++ forbids variable-size array ‘v’ eda.c:207: error: ISO C++ forbids variable-size array ‘nfloat’ cc1plus: warnings being treated as errors eda.c:215: warning: suggest a space before ‘;’ […]

哪个gcc和g ++版本支持c和c ++的哪个标准?

例如,哪个gcc版本支持c99? 是否有表格或图表来显示gcc和g ++的标准支持状态? gcc和g ++是如何演变的? 谢谢〜

包含许多“if”的临界循环,其输出是常量:如何保存条件测试?

我的代码中有一个关键循环,具有以下形状: int myloop(int a, …..){ /* some stuff */ // Critical loop while(…){ /* Some Stuff */ if(a == 1){ // ….. } else if(a == 2){ // ….. } else if(a == 3){ // ….. } else{ // …. } } } 由于循环从不接触“a”的值,所采用的分支将永远不会改变,但由于此循环非常重,因此需要多次测试“a”的值,这是完全没有必要的。 最好的事情可能是复制循环,以便在循环开始之前可以测试“if”,但这意味着复制了两种情况共同的许多东西,并将导致非常难看的代码…… 有没有办法要求GCC / G ++在编译时复制这段代码? 或者其他任何避免测试这么多次的技巧? 谢谢您的帮助 ! Nathann

致命错误:iostream:使用GCC编译C程序时没有这样的文件或目录

为什么当我想编译以下multithreading合并排序C程序时,我收到此错误: ap@sharifvm:~/forTHE04a$ gcc -g -Wall -o mer mer.c -lpthread mer.c:4:20: fatal error: iostream: No such file or directory #include ^ compilation terminated. ap@sharifvm:~/forTHE04a$ gcc -g -Wall -o mer mer.c -lpthread mer.c:4:22: fatal error: iostream.h: No such file or directory #include ^ compilation terminated. 我的节目: #include #include #include #include using namespace std; #define N 2 /* […]

while循环有两个参数吗?

我的女士给了我一个问题要解决。 预测以下代码的输出。 #include int main() { int i = 0, j = 0; printf(“Output is : “); while (i < 5, j < 10) // Doubt: how does while accept 2 arguments?? and how it works?? { i++; j++; } printf("%d, %d\n", i, j); } 我认为这是一个语法错误。 但是当我试图跑步时,它给了我输出。 Output is : 10, 10 但是怎么样? 谁有人解释一下? 但是,如果我删除第一个printf语句printf(“Output […]

do“const”声明有助于编译器(GCC)生成更快的代码吗?

const声明有助于编译器(GCC)生成更快的代码,还是只对可读性和正确性有用? Zed Shaw认为const在C / C ++中没用或过度使用: 接下来是对const的所有奇怪的魅力。 由于一些奇怪的原因,C ++喜欢让你在声明的每个部分都使用const,但是我得到与C相同的最终结果:调用一个函数。 (……) (来自: http : //librelist.com/browser//mongrel2/2010/7/15/c-verses-c++/#770d94bcfc6ddf1d8510199996b607dd )

在C ++中包含C代码

我试图将C代码包含在一个简单的C ++程序中,但我遇到了一个意想不到的问题 – 当我尝试编译程序时,g ++会出现以下错误: /tmp/cccYLHsB.o: In function `main’: test1.cpp:(.text+0x11): undefined reference to `add’ 我搜索了一个解决方案并找到了本教程: http://www.parashift.com/c++-faq/overview-mixing-langs.html 我的程序似乎没什么区别所以我有点迷失了…… 我的C ++程序如下所示: test1.ccp #include using namespace std; extern “C” { #include “sample1.h” } int main(void) { int x= add(3); cout << "the current value of x is " << x << endl; return 0; } sample1标头和函数如下所示: sample1.h #include […]

带参数“-S -save-temps”的gcc将中间文件放在当前目录中

参数-S -save-temps工作正常,只要我不在具有相同名称的文件上使用它们。 考虑以下情况:我有一个带有主目录的项目和一个名为subDir的子目录,在这两个目录中都放置了名为subDir文件。 如果我现在调用gcc -S -save-temps file.cpp subDir/file.c将只生成一个名为file.i中间文件。 这是预期的行为,正如gcc的man文件告诉我的那样,当使用-save-temps时,中间文件将始终放在当前路径中。 我的问题是,我正在研究我事先不知道的项目。 很有可能,有人在他的Makefiles中构建了上面提到的例子。 在那种情况下,我会被卡住,因为我需要两个中间文件。 对我正在构建的系统说几句话(为了更好地理解):我的工具使用make –just-print来收集调用,一个项目的make文件调用。 我扫描这些调用以进行编译器调用并添加-save-temps和-S选项。 目的是获取在编译项目过程中使用的每个预处理文件。 你是否有任何想法,即使上面提到的例子应该出现,我怎么能得到每个预处理的文件?

fcgio.cpp:50:错误:在此范围内未声明’EOF’

我试图在Linux Ubuntu 10.x机器上构建fastcgi。 我运行以下命令: ./configure make 我收到以下错误: fcgio.cpp: In destructor ‘virtual fcgi_streambuf::~fcgi_streambuf()’: fcgio.cpp:50: error: ‘EOF’ was not declared in this scope fcgio.cpp: In member function ‘virtual int fcgi_streambuf::overflow(int)’: fcgio.cpp:70: error: ‘EOF’ was not declared in this scope fcgio.cpp:75: error: ‘EOF’ was not declared in this scope fcgio.cpp: In member function ‘virtual int fcgi_streambuf::sync()’: fcgio.cpp:86: error: […]

makefile出错(“无输入文件”)

这是我第一次制作makefile,我真的很想了解这个过程。 我正在尝试为C ++项目创建一个非常简单的makefile,其结构如下: 根文件夹 生成文件 自述 src文件夹 ……这里的源文件…… 包含文件夹 …这里有外部库的头文件… lib文件夹 …这里的外部lib文件… bin文件夹 …构建可执行文件的输出目录… obj文件夹 …这里的目标文件…… 我在这里按照教程。 这是我的makefile: IDIR=include . CC=g++ CFLAGS=-I$(IDIR) ODIR=bin/obj LDIR=lib LIBS=none SRC=src _DEPS=hello.h DEPS=$(patsubst %,$(IDIR)/,%(_DEPS)) _OBJ=file1.o file2.o OBJ=$(patsubst %,$(ODIR)/%,$(_OBJ)) $(ODIR)/%.o: $(SRC)/%.cpp $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) # $(LIBS) test_proj: $(OBJ) $(CC) -o $@ $^ $(CFLAGS) .PHONY: clean clean: rm […]