我有一个默认的C/C++工具集(gcc 4.8),最近在自己的目录中构建并安装了5.2。我想使用makefile构建一些C++程序,它使用CC和CXX外植性来编译,但是使用隐式内建规则链接.o文件来构建可执行文件。
在makefile上运行make时,我使用以下命令
make all CC=/usr/gcc-5.2.0/bin/gcc-5.2.0 CXX=/usr/gcc-5.2.0/bin/g++-5.2.0
编译步骤都使用5.2编译器,但在构建可执行文件时,默认的g++用于链接所有内容。现在,这碰巧有效,结果运行,但这不是我想要的。我试着添加
LD=/usr/gcc-5.2.0/bin/g
我使用VS代码来运行c++代码。
每当我用Ctrl + Shift +B来构建我的.cpp文件时,就会弹出一个“echo”选项卡,这会使整个底部面板出现,然后我被要求“终端将被任务重用,按任意键关闭它。”
我不希望标签或面板弹出在所有,并希望整个构建过程在沉默中发生,什么都不会弹出。
这是我的tasks.json文件
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0
有一个C++代码:
#include <stdio.h>
int main() {
int b = sizeof('a');
if(b==4) printf("I'm a C program!\n");
else printf("I'm a C++ program!\n");
}
编译如下:
gcc main.cpp -o main
它成功并给予:
I'm a C++ program!
然后在函数main中添加一行
int *p1 = new int [1000];
它失败了,因为:
C:\Users\..
假设我有一个C++源文件,它看起来像:
int main() {
...
#ifdef flag
// do something
#endif
...
#ifndef flag
// do something different
#endif
...
}
我知道对于gcc来说,我可以使用-D'flag'作为预处理器的指令来定义flag,从而确定上面代码的哪一部分实际被编译,并且可以在Makefile中使用。
但是,如何编写Makefile,以便根据是否需要定义flag重新构建源文件(不对任何文件进行任何更改,包括Makefile本身)?
例如,我知道我可以(如果
我有以下c++代码
#include <iostream>
using namespace std;
int a=100;
int &b = a;
int main ( int argc, char ** argv)
{
cout << " a "<<a<<" b"<<b<<endl;
b = 200;
cout <<"a "<<a<<endl;
}
我想在目标文件的符号表中查看a和b的地址
我正在尝试用GCC将C和C++源代码编译在一起。
gcc -std=c++0x test.cpp -std=c99 test.c -lstdc++
现在,除了我得到两个警告之外,它工作得很好。
cc1plus: warning: command line option "-std=c99" is valid for C/ObjC but not for C++
cc1: warning: command line option "-std=c++0x" is valid for C++/ObjC++ but not for C
因此,我不能在此设置中使用-Wer
我正在尝试用Objective-C编写一个包装器,这样我就不必在库类之外编写c++了。
库主文件为LLAHProcessor.h .cpp
我的包装器是LLAHProcessorWrapper.h .mm
它编译得很好,但是当我将LLAHProcessorWrapper添加到其他类(比方说UIView)作为成员变量时,我得到了成百上千的错误,例如:
#include <map> : Map no such a file or directory
在每个c++类/结构中:
Expected specifier-qualifier list before ClassName
就像编译器
我按照我提到的页面上提供的设置CodeBlocks以使用GCC 4.7.1 .the示例编译得很好,但是当我尝试编译以下代码时,它随后产生了错误。我必须说,我甚至通过编译器设置(-std=c++11)设置了编译器C++11标志,但仍然没有成功。编译失败的代码:
#include <iostream>
#include <thread>
#include <vector>
//This function will be called from a thread
void func(int tid) {
std::cout << "