在之前的错误概念中,生成宏非常有用,因为我们经常添加新错误。 然而,代码生成本身非常复杂(打印代码的 C++ 代码;这对于交叉编译也不理想,另见 #2814)。
现在我们或多或少地固定了一些错误。 所以问题是我们应该怎么做:
@PhilippGackstatter @raphi011 @kodebach @Piankero你怎么看?
就我个人而言,我更喜欢选项 1。错误代码应该很少更改,这使得手动编写 C 代码和保持其他语言同步的额外工作可以忽略不计。 与设置任何形式的自动生成相比,最初的工作也应该更少。
为什么不是选项 2?
Mustache 模板必须以某种方式提供输入数据。 要么我们必须使用在构建时编译的自定义可执行文件。 在这种情况下,我们只需去掉 C++ 代码中的std::cout << ...
,其他的不会改变。 另一种选择是使用默认的 mustache 可执行文件,它是一个 Ruby 脚本,因此需要安装 Ruby。
另外kdb gen
不能重用,因为这需要首先编译kdb
,这需要kdberrors.h
。
为什么不是选项 3?
生成 C 代码可能适用于 CMake,但更复杂的语言在使用 CMake 时可能会出现问题。
如果我们决定使用某种形式的代码生成,我们应该只生成绝对需要生成的部分。 例如,当前的kdberrors.h
包含许多完全静态的代码,与我们实际遇到的错误无关。 不应生成此代码,我们应该从静态文件中#include
它。
由于稳定的错误代码,我也更喜欢选项 1。 添加代码生成还会给整体代码增加不必要的复杂性,这又很容易出错。
@kodebach感谢您对选项 2 的详细说明
我认为很明显我们选择选项 1, @Piankero你能写下决定吗?
对于绑定,这意味着没有太大变化。
如果我们有一个绑定写作教程,描述:
我希望我们可以针对我们在不同语言中看到的不同情况扩展本教程。 @Piankero能否请您开始编写教程,特别是错误处理部分(如何实现继承,...)
教程:#2875
设计决策:#2872