gpt4 book ai didi

c++ - C++中的模块是什么?

转载 作者:可可西里 更新时间:2023-11-01 16:16:10 24 4
gpt4 key购买 nike

以下句子中的模块指的是什么?

Don't allow exceptions to propagate across module boundaries.

这是 C++ Coding Standards 中的第 62 条规则作者:Herb Sutter 和 Andrei Alexandrescu。


我现在已经阅读了这本书,所以我想引用部分摘要,我认为这会增加一些清晰度:

Don't throw stones into your neighbor’s garden: There is no ubiquitous binary standard for C++ exception handling. Don't allow exceptions to propagate between two pieces of code unless you control the compiler and compiler options used to build both sides; otherwise, the modules might not support compatible implementations for exception propagation. Typically, this boils down to: Don’t let exceptions propagate across module/subsystem boundaries.

最佳答案

这是个好问题。 C++ 标准不使用这个词模块(至少我不认为),以及通常的日常含义有点像翻译单元。除了那不可能Herb 和 Andrei 的意思,因为使用的真正目的是异常(exception)情况是向上传播到 local body 之外代码——否则,您将使用返回代码。

我只能猜测,但他们可能意味着一些可能合理地在不同的 DLL 中实现。传播跨 DLL 边界的异常可能是个问题,如果DLL 已使用不同的编译器编译,或使用一种不同的语言。否则……

通常认为最好的做法是进行一次 try/catch在 main 中阻塞(或在其他一些高级函数中,在每个线程),并在那里捕获所有异常,无论在哪里他们来自。当您这样做时,现代编译器没有问题。

关于c++ - C++中的模块是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com