这是一个有点离奇的问题.我的目标是理解语言设计决策并确定C++中反射的可能性.
为什么C++语言委员会不会在语言中实现反思?对于不在虚拟机上运行的语言(如java),反射是否太难?
如果要实现C++的反射,那么挑战是什么?
我想反射的使用是众所周知的:编辑器可以更容易编写,程序代码更小,可以为单元测试生成模拟等等.但是,如果你也可以对反射的使用发表评论,那就太棒了.
我正在考虑开始使用Boost.Log日志库.有人使用Boost.Log吗?请分享您在这方面的经验.
我正在考虑的其他库是Apache log4cxx(安装起来似乎很乏味,但我的队友想要一些简单易用的东西)和Pantheios(同样的问题,因为它适用于额外的前端和后端).
我正在开发一个开源C++项目,用于在Linux和Windows上编译的代码.我使用CMake在Linux上构建代码.为了便于开发设置和政治原因,我必须坚持使用Windows上的Visual Studio项目文件/编辑器(例如,我无法切换到Code :: Blocks).我看到了使用CMake生成Visual Studio文件的说明,如此处所示.
您之前是否使用过CMake生成Visual Studio文件?你的经历怎么样?假设我想在项目中添加一个新文件.这是什么工作流程?
在Web应用程序项目的构建选项卡上,我有一个名为"警告级别"的设置.我可以设置0到4之间的值.这些值是什么意思?值0会更严格并产生更多警告,反之亦然?我还没有找到任何关于它的文件,但也许我在找错了地方.
我想执行以下操作:如果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测试失败(可以预料).
我有这样的代码:
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_ptr
的Ret1
不是源自boost::shared_ptr
的RetInterface
.但我想返回boost::shared_ptr
的Ret1
在其他类使用,否则我必须在返回后投返回值.
使用gdb进行调试,任何使用STL/boost的c ++代码仍然是一场噩梦.任何使用过STL的gdb的人都知道这一点.例如,请参阅此处代码中的一些调试会话的示例运行.
我试图通过收集提示来减轻疼痛.您能否对我在下面收集的提示发表评论(特别是您使用过的提示以及您建议的任何更改) - 我列出的提示是技术性的降序.
更新:GDB有一个新的C++分支.
我正在使用CMake生成Visual Studio项目文件.我想在设置PATH环境变量后运行测试可执行文件,以便它能够加载所需的dll.我根据http://www.mail-archive.com/cmake@cmake.org/msg21493.html上的讨论尝试过,但它不起作用.
您是否为此目的使用CMake和Visual Studio?请分享您的经验.
此外,我找不到调试我的CMake脚本的简单方法,例如查看它赋予PATH变量的值.设置CMake详细CMAKE_VERBOSE_MAKEFILE
没有帮助.我将如何自己调试?
我正在编写一个应用程序,我很惊讶它的总内存使用量已经太高了.我想分析我的应用程序的动态内存使用情况:堆中有多少个对象,以及哪些函数创建了这些对象?此外,每个对象使用了多少内存?
有一个简单的方法吗?我正在研究linux和windows,所以任何平台的工具都足够了.
注意:我不关心这里的内存泄漏.
如果我今天要从头开始实现一个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书籍是否意味着它的解决方案更全面(我必须自己编写较少的代码)?