小编Cla*_*rae的帖子

是否有工具将"覆盖"标识符添加到现有C++代码中

任务

我试图找出如何最好地将C++ 0x的override标识符添加到已经覆盖大量C++代码的所有现有方法中,而无需手动执行.

(我们有许多,几十万行代码,而且手动完成它将是一个完全不起作用的.)

目前的想法

我们的编码标准说我们应该virtual在派生类中对所有隐式虚方法添加关键字,即使严格不必要(以帮助理解).

因此,如果我自己编写脚本,我会编写一个脚本来读取所有标题,找到所有以virtual开头的函数,并override在下面的分号前插入.然后在支持的编译器上编译它override,并修复基类中的所有错误.

但我真的不想使用这种本土方式,因为:

  • 它显然会很乏味且容易出错.
  • 并不是每个人都记得,每次都要添加虚拟关键字,因此这种方法会错过一些现有的覆盖

有现成的工具吗?

那么,是否已经有一个工具可以解析C++代码,检测覆盖的现有方法,并附override加到它们的声明中?

(我知道静态分析工具,比如PC-lint,它会警告看起来应该覆盖的函数.我所追求的是实际上会使我们的代码变得混乱的东西,以便在编译器中检测到覆盖中的未来错误时间,而不是后来的静态分析)

(如果有人想要指出C++ 03不支持'覆盖'......在实践中,我将添加一个宏,而不是实际的"覆盖"标识符,以便在旧版本上使用我们的代码不支持此功能的编译器.所以在添加标识符之后,我会运行一个单独的脚本来替换它我们将要使用的任何宏...)

提前致谢...

c++ overriding c++11

19
推荐指数
2
解决办法
2199
查看次数

doxygen函数参数文档(//!<vs @param)

如果我在函数参数的"成员之后"文档中使用,例如,//!<在每个参数之后使用,而不是在标题中使用@param,则"Parameters"部分始终位于生成的输出文件中的"Return"之后.

是否可以定义顺序,以便"返回"之前放置"参数"?

/**
 *****************************************************************************************
 *  @brief      Test API
 *
 *  @usage      This API can be called at any time
 *
 *  @return     0 if successful; or 1 if failed
 ****************************************************************************************/

int TestAPI(
    int argument1,       //!< first argument
    int argument2        //!< second argument
    );
Run Code Online (Sandbox Code Playgroud)

doxygen

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

在CMake中QMake的CONFIG + =控制台

在QMake中:

CONFIG += console
Run Code Online (Sandbox Code Playgroud)

如何在CMake中获得相同的效果?

(规格:Qt 5.0.2,CMake 2.8.10)

qt cmake

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

如何在cookiecutter中使用机器生成的变量

在用户为变量提供了一些值之后,有没有办法机器生成一些值cookiecutter.json

我问的原因是:

  • 我需要提示的其中一个值是用户难以解决的问题
  • 但是我很容易编写一些Python代码来生成正确的值

所以我真的希望能够删除用户提示,并改为计算值.

我试过的事情:

  • 在线搜索示例pre_gen_project.py文件以显示如何执行此操作
  • 阅读cookiecutter 高级用法页面

我在命令行上使用cookiecutter:

cookiecutter path_to_template
Run Code Online (Sandbox Code Playgroud)

我错过了任何技巧吗?

cookiecutter

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

将/ EHa添加到使用Microsoft Visual C++编译器的QtCreator

如何/EHa在MS编译器的QtCreator中添加(结构化异常处理).我已经使用过Microsoft Visual C++编译器.

c++ qt visual-studio-2010 qt-creator visual-c++

6
推荐指数
2
解决办法
888
查看次数

提高C++应用程序启动速度的方法

最近,我的老板要求我提高应用程序的启动速度,AP是用C++编写的.AP有点大,它使用200+ dll,Windows需要很长时间才能进入main()函数.我试过这两种方式,但还是不能让老板开心.

  1. 延迟加载dll http://msdn.microsoft.com/en-us/library/yx9zd12s(VS.80).aspx
  2. 使用EDITBIN修改EXE http://msdn.microsoft.com/en-us/library/xd3shwhf(VS.80).aspx

还有其他方法可以改善它吗?提前致谢.

c++ windows performance

5
推荐指数
2
解决办法
1233
查看次数

在KDE Python应用程序中处理KeyboardInterrupt?

我正在研究PyKDE4/PyQt4应用程序,Autokey,我注意到当我发送程序一个CTRL + C时,键盘中断在我与应用程序交互之前不会被处理.单击菜单项或更改复选框.

lfaraone@stone:~$ /usr/bin/autokey
^C^C^C
Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/autokey/ui/popupmenu.py", line 113, in on_triggered
    def on_triggered(self):
KeyboardInterrupt
^C^C^C
Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/autokey/ui/configwindow.py", line 423, in mousePressEvent
    def mousePressEvent(self, event):
KeyboardInterrupt
Run Code Online (Sandbox Code Playgroud)

尽管在/ usr/bin/autokey中有以下内容:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from autokey.autokey import Application

a = Application()
try:
    a.main()
except KeyboardInterrupt:
    a.shutdown()
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)

为什么没有捕获KeyboardInterrupt:

  • 当我发出它时,而不是当我接下来在GUI中执行操作时
  • 通过最初的try/except子句?

使用Python 2.6运行Ubuntu 9.04.

python pyqt pykde keyboardinterrupt autokey

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

在 Autokey 中正确导入 Python 类

我编写了一类静态方法作为AutoKey API 的补充。我想将这些包含在我在自动键编辑器中编写的脚本中,但我还无法完全弄清楚,因为我对 python 的经验仍然有限。

我应该把 class-name.py 文件放在哪里才能将其导入到 autokey 中?

python ubuntu autokey

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

声明QStringList时出错

我有一个公共职能:

void determineAction(QStringList tempL); // in header file

void CompArch::determineAction(QStringList tempL)
{


}

//in cpp file
Run Code Online (Sandbox Code Playgroud)

我收到错误:

CompArch.cpp:127:6: error: ‘tempL’ has incomplete type
/usr/include/qt4/QtCore/qstring.h:77:7: error: forward declaration of ‘struct QStringList’
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样.

c++ qstring qt

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

为什么使用Gradle而不是Capistrano?

我是两个工具的新手,而不是完全.

如果我使用Capistrano进行部署,为什么Gradle是部署的目标?

另请参阅Gradle概述.

capistrano gradle

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