标签: g++

对静态类成员的未定义引用

谁能解释为什么以下代码无法编译?至少在g ++ 4.2.4上.

更有趣的是,为什么它会在我将MEMBER转换为int时进行编译?

#include <vector>

class Foo {  
public:  
    static const int MEMBER = 1;  
};

int main(){  
    vector<int> v;  
    v.push_back( Foo::MEMBER );       // undefined reference to `Foo::MEMBER'
    v.push_back( (int) Foo::MEMBER ); // OK  
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ g++

191
推荐指数
5
解决办法
11万
查看次数

如何为Fedora安装g ++?

如何g++为Fedora Linux 安装?我一直在搜索dnf命令安装,g++但没有找到任何东西.

我该如何安装?

我已经安装好了 gcc

c++ linux g++ fedora dnf

187
推荐指数
7
解决办法
18万
查看次数

如何制作可变参数宏(可变数量的参数)

我想在C中编写一个宏,它接受任意数量的参数,而不是特定的数字

例:

#define macro( X )  something_complicated( whatever( X ) )
Run Code Online (Sandbox Code Playgroud)

哪里X有任何数量的参数

我需要这个,因为它whatever是重载的,可以用2或4个参数调用.

我试过两次定义宏,但第二个定义覆盖了第一个!

我正在使用的编译器是g ++(更具体地说,mingw)

c g++ variadic c-preprocessor

182
推荐指数
5
解决办法
18万
查看次数

禁用所有gcc警告

我正在开发一个项目,它将读取特定种类的编译器错误消息并对它们执行有用的操作.我正在测试这个示例代码库(一个随机的开源应用程序),因此经常重建,包含一些产生警告的位,这对我来说是不感兴趣的.

如何禁用GCC的所有警告,所以我可以看到错误消息,如果有的话?

gcc warnings g++

168
推荐指数
1
解决办法
12万
查看次数

使用多个核心使用g ++进行编译

快速提问:什么是编译器标志,允许g ++生成自身的多个实例,以便更快地编译大型项目(例如,一次为多核CPU提供4个源文件)?

非常感谢.

c++ compiler-construction multicore makefile g++

166
推荐指数
8
解决办法
14万
查看次数

在Ubuntu中交叉编译32位的64位程序时,缺少包含"bits/c ++ config.h"

我正在运行32位版本的Ubuntu 10.10并尝试交叉编译为64位目标.根据我的研究,我已经安装了g ++ - multilib包.

该程序是一个非常简单的hello世界:

#include <iostream>

int main( int argc, char** argv )
{
  std::cout << "hello world" << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译:

g++ -m64 main.cpp
Run Code Online (Sandbox Code Playgroud)

错误:

In file included from main.cpp:1:
/usr/include/c++/4.4/iostream:39: fatal error: bits/c++config.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

我发现了一个c++config.h文件,但他们居住下i486-linux-gnui686-linux-gnu目录中/usr/include/c++/4.4/没有c++config.h/usr/include/c++/bits.

关于我失踪的任何想法?没有-m64标志的编译工作正常(创建并正确运行a.out).

编辑感谢来自@nightcracker的提示,我对32位和64位系统上的包含结构进行了一些调查.我在下面添加了一个答案,暂时"修复"了问题,但我认为它会在下次更新时中断.基本上,我错过了一个名为的目录/usr/include/c++/4.4/i686-linux-gnu/64,该目录应包含一个名为bits具有缺失包含文件的子目录.知道什么包应该照顾这个吗?

ubuntu g++ cross-compiling 32bit-64bit ubuntu-10.10

166
推荐指数
3
解决办法
16万
查看次数

为什么在没有返回值的情况下流出非void函数的末尾不会产生编译器错误?

自从我多年前意识到这一点,默认情况下这不会产生错误(至少在GCC中),我一直想知道为什么?

我知道您可以发出编译器标志来产生警告,但是它不应该总是出错吗?为什么非void函数没有返回值才有效?

评论中要求的示例:

#include <stdio.h>
int stringSize()
{
}

int main()
{
    char cstring[5];
    printf( "the last char is: %c\n", cstring[stringSize()-1] ); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

...编译.

c c++ gcc g++

157
推荐指数
5
解决办法
4万
查看次数

如何查看哪些标志-march = native将激活?

我正在使用GCC 4.3编译我的C++应用程序.而不是手动选择我正在使用的优化标志-march=native,理论上应该添加适用于我正在编译的硬件的所有优化标志.但是我如何检查它实际使用的是哪些标志?

gcc g++ compiler-flags compiler-optimization

152
推荐指数
5
解决办法
8万
查看次数

LD_LIBRARY_PATH vs LIBRARY_PATH

我正在构建一个简单的C++程序,我想暂时用一个系统提供的共享库替换它的更新版本,以进行开发和测试.

我尝试设置LD_LIBRARY_PATH变量,但链接器(ld)失败了:

/ usr/bin/ld:找不到-lyaml-cpp

我希望这可以工作,因为根据ld手册页:

链接器使用以下搜索路径来查找所需的共享库:...对于本机链接器,环境变量"LD_LIBRARY_PATH"的内容...

然后我尝试设置LIBRARY_PATH,这很有效.

根据GCC手册:

LIBRARY_PATH的值是以冒号分隔的目录列表,与PATH非常相似.当配置为本机编译器时,GCC会在搜索特殊链接器文件时尝试这样指定的目录,如果它无法使用GCC_EXEC_PREFIX找到它们.在使用-l选项搜索普通库时,使用GCC链接也会使用这些目录(但首先使用-L指定的目录).

正如(GCC)手册所示,LIBRARY_PATH可行,因为我与GCC链接.

但..

  • 由于我与gcc链接为什么要调用ld,因为错误消息表明?
  • 让两个变量服务于同一目的有什么意义?还有其他差异吗?

gcc g++ ld

144
推荐指数
3
解决办法
17万
查看次数

std :: enable_if有条件地编译成员函数

我想尝试一个简单的例子来了解如何使用std::enable_if.在我读完这个答案之后,我认为想出一个简单的例子应该不会太难.我想用来std::enable_if在两个成员函数之间进行选择,并且只允许使用其中一个成员函数.

不幸的是,下面的代码不能用gcc 4.7进行编译,经过数小时和数小时的尝试后我会问你们我的错误是什么.

#include <utility>
#include <iostream>

template< class T >
class Y {

    public:
        template < typename = typename std::enable_if< true >::type >
        T foo() {
            return 10;
        }
        template < typename = typename std::enable_if< false >::type >
        T foo() {
            return 10;
        }

};


int main() {
    Y< double > y;

    std::cout << y.foo() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

gcc报告以下问题:

% LANG=C make CXXFLAGS="-std=c++0x" enable_if
g++ -std=c++0x    enable_if.cpp   -o enable_if
enable_if.cpp:12:65: error: `type' in …
Run Code Online (Sandbox Code Playgroud)

c++ templates g++ c++11

144
推荐指数
7
解决办法
10万
查看次数