小编mus*_*nul的帖子

如何为CMake指定新的GCC路径

我的操作系统是centos,它在路径中有一个默认的gcc /usr/bin/gcc.但它已经老了,我需要一个新版本的gcc.所以我在新路径中安装了新版本/usr/local/bin/gcc.

但是当我运行时cmake,它仍然使用旧版本的gcc path(/usr/bin/gcc).如何将gcc指定为新路径(/usr/local/bin/gcc).

我试图覆盖/usr/bin/gcc/usr/local/bin/gcc,但它不能正常工作.

gcc cmake

101
推荐指数
4
解决办法
14万
查看次数

哪个CMake版本最低?

我想用"cmake_minimum_required"工具为CMake定义最小版本.我已经看到一些项目设置了最低版本2.8,其他一些设置为3.0或3.2.我想了解您对该主题的意见和最佳实践.

cmake minimum required

17
推荐指数
1
解决办法
6967
查看次数

根据C++标准,显式调用构造函数和析构函数是否安全?

一些开发人员明确地调用构造函数和析构函数来进行一些解决方法.我知道,这不是一个好习惯,但似乎是为了实现一些场景.

例如,在本文中,Beautiful Native Libraries,作者使用了这种技术.

在下面的代码中,最后可以看到构造函数被显式调用:

#include <limits>

template <class T>
struct proxy_allocator {
    typedef size_t size_type;
    typedef ptrdiff_t difference_type;
    typedef T *pointer;
    typedef const T *const_pointer;
    typedef T& reference;
    typedef const T &const_reference;
    typedef T value_type;

    template <class U>
    struct rebind {
        typedef proxy_allocator<U> other;
    };

    proxy_allocator() throw() {}
    proxy_allocator(const proxy_allocator &) throw() {}
    template <class U>
    proxy_allocator(const proxy_allocator<U> &) throw() {}
    ~proxy_allocator() throw() {}

    pointer address(reference x) const { return &x; }
    const_pointer address(const_reference x) const { …
Run Code Online (Sandbox Code Playgroud)

c++ standards constructor destructor

13
推荐指数
2
解决办法
1411
查看次数

CMake 有 Profile 的构建类型吗?

CMake 有多种构建类型,例如发布、调试、带有调试信息的发布和最小大小发布。我想知道用户是否可以添加其他构建类型(例如 Profile),以及这是否是其他程序员的众所周知的做法。

profiler cmake

5
推荐指数
1
解决办法
4394
查看次数

如何让 Eclipse 反汇编 Intel 语法中的代码

我使用 Eclise CDT 作为开发环境。我使用反汇编视图来查看装配等效项。但我习惯于阅读英特尔语法中的编写汇编代码。是否有任何选项可以让 Eclipse 以英特尔语法转储汇编代码?

eclipse assembly eclipse-cdt disassembly

5
推荐指数
1
解决办法
1556
查看次数

如何扩展指定的命名空间

我想通过一个例子来解释我的问题。我正在使用第三方库,有自己的命名空间。我想导入这个库的一部分,在下面提到的命名空间内有自己的命名空间。

\n\n
namespace library {\n  namespace part {\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

当前项目中也存在层次结构。我想使用另一个名称将库::part导入并扩展到我的项目中。我尝试执行以下操作:

\n\n
#include <library/part>\n\nnamespace project {\n  namespace my_part = library::part;\n}\n\nnamespace project {\n  namespace my_part {\n    void my_extension_1();\n    void my_extension_2();\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

该场景可以用该语言当前的工具来完成吗?如果不是,应该如何解决?还是不行,为什么?

\n\n

编辑:错误消息 gcc 5.3.0 转储:

\n\n
\n

错误:命名空间 \xe2\x80\x98project::my_part\xe2\x80\x99 的声明冲突

\n
\n\n

编辑:有一个关于扩展原始名称空间的建议,但我正在要求。Library::part用户不应直接访问我添加的功能。

\n

c++ namespaces c++11 c++14 c++17

4
推荐指数
1
解决办法
2697
查看次数

如何在单元测试中访问私有成员?

在开发单元测试时,访问私有成员以检查类的内部状态可能是必要的.有时getter和setter函数不可用,有时它们不公开.

处理它的第一种方法是,编写预处理器定义写入publis而不是private和protected.

#define protected public
#define private public
Run Code Online (Sandbox Code Playgroud)

第二种方法是让测试类成为类的朋友.

class test_foo {
};

class foo {
private:
  int mem;

  friend class test_foo;
};
Run Code Online (Sandbox Code Playgroud)

第三种方法是为测试创建公共接口.

class foo {

#if defined FOO_UNIT_TEST
public:
  int get_mem() const;
#endif

private:
  int mem;
};
Run Code Online (Sandbox Code Playgroud)

除了这些方法之外还有其他方法吗?每种方法都有利有弊.哪一个可以被认为是最佳实践?

谢谢.

c++ unit-testing

3
推荐指数
1
解决办法
2425
查看次数

不可复制和不可移动一起使用?

我想创建一个不可复制和不可移动的基类。

class noncopyable {
protected:
  noncopyable() = default;
  ~noncopyable() = default;

  noncopyable(noncopyable const &) = delete;
  noncopyable &operator=(noncopyable const &) = delete;
};

class nonmovable {
protected:
  nonmovable() = default;
  ~nonmovable() = default;

  nonmovable(nonmovable &&) = delete;
  nonmovable &operator=(nonmovable &&) = delete;
};
Run Code Online (Sandbox Code Playgroud)

有没有一个类应该既不可复制又不可移动的场景?

class non : public noncopyable, public nonmovable {
};

class foo : public non {
};
Run Code Online (Sandbox Code Playgroud)

如果有,这里“非”类的方便名称应该是什么?

c++ c++11

1
推荐指数
2
解决办法
2811
查看次数

静态声明的二维数组C ++作为类的数据成员

我正在尝试创建一个class grid包含数据成员的unsigned NRunsigned NC它还应该包含一个2D数组double Coordiantes[NR][NC]。我希望初始化数据成员NR,并NC通过类的构造函数。我试图避免二维数组的动态分配,因为我更喜欢连续内存分配,以便尽可能避免缓存丢失。

我不确定是否可以,但是任何输入都会有所帮助。

c++ arrays multidimensional-array

1
推荐指数
1
解决办法
105
查看次数

为什么boost :: filesystem :: path返回路径而不是字符串

我有这种代码和平

string targetFile = string + boost::filesystem::path.filename()
Run Code Online (Sandbox Code Playgroud)

问题是它认为path.filename()是路径而不是文档告诉的字符串(http://www.boost.org/doc/libs/1_36_0/libs/filesystem/doc/reference.html#Class-template-basic_path)

c++ boost boost-filesystem

0
推荐指数
1
解决办法
112
查看次数