小编ami*_*mit的帖子

为什么C++没有反射?

这是一个有点离奇的问题.我的目标是理解语言设计决策并确定C++中反射的可能性.

  1. 为什么C++语言委员会不会在语言中实现反思?对于不在虚拟机上运行的语言(如java),反射是否太难?

  2. 如果要实现C++的反射,那么挑战是什么?

我想反射的使用是众所周知的:编辑器可以更容易编写,程序代码更小,可以为单元测试生成模拟等等.但是,如果你也可以对反射的使用发表评论,那就太棒了.

c++ reflection

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

使用Boost.Log日志库的经验?

我正在考虑开始使用Boost.Log日志库.有人使用Boost.Log吗?请分享您在这方面的经验.

我正在考虑的其他库是Apache log4cxx(安装起来似乎很乏味,但我的队友想要一些简单易用的东西)和Pantheios(同样的问题,因为它适用于额外的前端和后端).

c++ logging boost boost-log

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

使用CMake生成Visual Studio C++项目文件

我正在开发一个开源C++项目,用于在Linux和Windows上编译的代码.我使用CMake在Linux上构建代码.为了便于开发设置和政治原因,我必须坚持使用Windows上的Visual Studio项目文件/编辑器(例如,我无法切换到Code :: Blocks).我看到了使用CMake生成Visual Studio文件的说明,如此处所示.

您之前是否使用过CMake生成Visual Studio文件?你的经历怎么样?假设我想在项目中添加一个新文件.这是什么工作流程?

c++ build-process cross-platform cmake visual-studio

86
推荐指数
6
解决办法
13万
查看次数

Visual Studio警告级别含义?

在Web应用程序项目的构建选项卡上,我有一个名为"警告级别"的设置.我可以设置0到4之间的值.这些值是什么意思?值0会更严格并产生更多警告,反之亦然?我还没有找到任何关于它的文件,但也许我在找错了地方.

c# warnings compiler-warnings visual-studio

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

如何在CMake中使用CCache?

我想执行以下操作:如果PATH中存在CCache,请使用"ccache g ++"进行编译,否则使用g ++.我尝试编写一个包含的小型my-cmake脚本

    CC="ccache gcc" CXX="ccache g++" cmake $*
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用(运行make仍然不使用ccache;我使用CMAKE_VERBOSE_MAKEFILE检查了这一点).

更新:

根据此链接,我尝试将脚本更改为

     cmake -D CMAKE_CXX_COMPILER="ccache" -D CMAKE_CXX_COMPILER_ARG1="g++" -D CMAKE_C_COMPILER="ccache" -D CMAKE_C_COMPILER_ARG1="gcc" $*
Run Code Online (Sandbox Code Playgroud)

但cmake抱怨说使用编译器ccache测试失败(可以预料).

c++ unix cmake ccache

80
推荐指数
8
解决办法
3万
查看次数

如何使用带有智能指针的协变返回类型?

我有这样的代码:

class RetInterface {...}

class Ret1: public RetInterface {...}

class AInterface
{
  public:
     virtual boost::shared_ptr<RetInterface> get_r() const = 0;
     ...
};

class A1: public AInterface
{
  public:
     boost::shared_ptr<Ret1> get_r() const {...}
     ...
};
Run Code Online (Sandbox Code Playgroud)

此代码无法编译.

在视觉工作室,它提出

C2555:覆盖虚函数返回类型不同且不协变

如果我不使用boost::shared_ptr但返回原始指针,代码编译(我理解这是由于C++中的协变返回类型).我可以看到这个问题是因为boost::shared_ptrRet1不是源自boost::shared_ptrRetInterface.但我想返回boost::shared_ptrRet1在其他类使用,否则我必须在返回后投返回值.

  1. 难道我做错了什么?
  2. 如果没有,为什么这样的语言 - 它应该是可扩展的,以处理这种情况下智能指针之间的转换?有一个理想的解决方法吗?

c++ smart-pointers covariance

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

使用gdb调试C++ STL/Boost的最佳实践

使用gdb进行调试,任何使用STL/boost的c ++代码仍然是一场噩梦.任何使用过STL的gdb的人都知道这一点.例如,请参阅此处代码中的一些调试会话的示例运行.

我试图通过收集提示来减轻疼痛.您能否对我在下面收集的提示发表评论(特别是您使用过的提示以及您建议的任何更改) - 我列出的提示是技术性的降序.

  • 有人使用"Stanford GDB STL utils""UCF GDB utils"吗?是否有一些这样的工具用于boost数据结构?上面的util似乎不是递归可用的,例如用于在一个命令内以清晰的方式打印boost :: shared_ptr的向量.
  • 写你的.gdbinit文件.例如,包括C++相关的美化器,列在UCF GDB工具的底部.
  • 使用checked/debug STL/Boost库,例如STLport.
  • 使用日志记录(例如描述这里)

更新:GDB有一个新的C++分支.

c++ boost gdb stl

46
推荐指数
2
解决办法
2万
查看次数

如何使用CMake和Visual Studio运行测试来设置路径环境变量

我正在使用CMake生成Visual Studio项目文件.我想在设置PATH环境变量后运行测试可执行文件,以便它能够加载所需的dll.我根据http://www.mail-archive.com/cmake@cmake.org/msg21493.html上的讨论尝试过,但它不起作用.

您是否为此目的使用CMake和Visual Studio?请分享您的经验.

此外,我找不到调试我的CMake脚本的简单方法,例如查看它赋予PATH变量的值.设置CMake详细CMAKE_VERBOSE_MAKEFILE没有帮助.我将如何自己调试?

dll build cmake visual-studio

42
推荐指数
5
解决办法
3万
查看次数

C++中的内存分配概要

我正在编写一个应用程序,我很惊讶它的总内存使用量已经太高了.我想分析我的应用程序的动态内存使用情况:堆中有多少个对象,以及哪些函数创建了这些对象?此外,每个对象使用了多少内存?

有一个简单的方法吗?我正在研究linux和windows,所以任何平台的工具都足够了.

注意:我不关心这里的内存泄漏.

c++ profiling memory-management

39
推荐指数
6
解决办法
3万
查看次数

Java或Python或Ruby for Web Application?

如果我今天要从头开始实现一个Web应用程序,我应该选择哪个应用程序堆栈?三个主要候选者是java,python和Ruby on Rails(RoR).还有.NET,但它偏向于M $.

专业的Java:

1) Stacks of thick books
2) Largest developer community
3) Typed languages, which prevents subtle bugs
4) Augmented with groovy interpreted language
Run Code Online (Sandbox Code Playgroud)

临蟒蛇:

1) Concise code
2) Thin books
3) Can launch web app for free on Google Apps
Run Code Online (Sandbox Code Playgroud)

临回报率:

1) Concise code
2) Thin books
3) Ruby may be slightly better programming language than python, but they are converging.
Run Code Online (Sandbox Code Playgroud)

总的来说,python/RoR之间没有太多选择.我必须做出的选择是在Java和Python之间.我稍微喜欢java,因为它是一种打字语言,但我的好朋友喜欢python,因为它更简洁.厚厚的Java书籍是否意味着它的解决方案更全面(我必须自己编写较少的代码)?

web-applications

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