小编Gia*_*nni的帖子

在C++中使用Exceptions的可能的错误处理策略是什么,它们的后果和含义是什么?

我希望您能帮助理解在C++中使用/禁用异常的可能方法.

我的问题不是关于什么是最佳选择,而是关于什么是可能的选择以及这些选项意味着什么.

目前,我能想到的选择是:

  1. 使用-fno-exceptions进行编译并放弃大多数std容器(可能定义不抛出的内部容器,例如SpiderMonkey Coding_Style中建议的)
  2. 只是避免抛出并捕获自己的代码,但仍然使用可能抛出异常的std容器.对于这样的事实感到高兴,在例外的情况下,程序可以在没有堆栈展开的情况下终止,并且甚至RAII处理的外部资源也可能被搁置.(根据这个SO问题的答案,这似乎是Google C++方法)
  3. 没有使用异常但是将所有std :: exception try块包装起来只是为了确保堆栈被解除并且在程序终止之前释放对外部资源的RAII句柄,就像这个Cert C++规则一样
  4. 如上所述,但也会抛出异常,最终导致程序终止.
  5. 还使用catched异常并从异常中恢复.

我想知道我对选项的理解是否正确,以及我可能错过了什么或理解错误.

我还想知道给予基本异常安全的限制是否适用于选项2-4(异常总是最终导致程序终止)或者异常安全要求是否/如何放宽/限制于特定情况(例如处理外部资源) ,文件).

c++ exception-handling

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

Visual Studio Code 调试:源代码然后在同一 shell 上启动

我当前的项目工作流程如下:

  • 构建项目(通过catkin)
  • 获取 setup.sh 脚本(由 catkin 生成,我不想修改)设置环境变量和我的可执行文件所需的名称。
  • 运行“MyProgram”,它仅在获取“setup.sh”脚本后才可用。

我希望能够在 Visual Studio Code 中调试我的项目。为此,我定义了一个通过 catkin 构建可执行文件的任务,名为“catkin build all”,并且我将第二个任务定义为:

{
  "type": "shell",
  "label": "load programs",
  "command": "source /some_folder/setup.sh",
  "group": "build",
  "dependsOn": ["catkin build all"]
}
Run Code Online (Sandbox Code Playgroud)

这是我的 lanuch.json 启动配置的“preLaunchTask”。

启动调试将正确编译项目,但执行失败并出现错误“启动:程序 myProgram 不存在”。事实上,如果 setup.sh 没有来源,则无法找到程序 MyProgram,但应该由“preLaunchTask”来源。

在我的 launch.json 中,我还可以将“program”设置为“/full/path/to/myProgram”而不是“myProgram”,但在这种情况下找不到共享库,因为 setup.sh 会处理这个问题。

我还尝试在 shell 上获取 setup.sh 源,然后从同一 shell 启动 Visual Studio 代码,但这并没有解决“启动:程序 myProgram 不存在”问题。

任务是否在不同的 shell 上运行?如何让 preLaunchTask 与后续程序代码在同一个 shell 中运行?或者关于如何让我的工作流程正常工作的任何其他提示?

c++ gdb ros catkin visual-studio-code

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

matlab局部静态变量

为了在不同的场景中测试算法,需要迭代地调用matlab函数alg.m.

alg.m中的瓶颈是这样的:

load large5Dmatrix.mat
small2Dmatrix=large5Dmatrix(:,:,i,j,k)  % i,j and k change at every call of alg.m
clear large5Dmatrix
Run Code Online (Sandbox Code Playgroud)

为了加速我的测试,我想large5Dmatrix只在第一次调用alg.m时加载,并且对将来的调用有效,可能只在alg.m的范围内

有没有办法在matlab中将其设置large5Dmatrix 为全局?

您能想到在alg.m中使用这个大的常量值矩阵的更好方法吗?

matlab

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

标签 统计

c++ ×2

catkin ×1

exception-handling ×1

gdb ×1

matlab ×1

ros ×1

visual-studio-code ×1