开源改变世界

如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码 #634

推推 grbl 3年前 (2023-01-29) 101次浏览
打开
sheetcam 打开了这个问题 2019 年 8 月 14 日 · 5 条评论
打开

如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码#634

sheetcam 打开了这个问题 2019 年 8 月 14 日 · 5 条评论

注释

如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码 #634
贡献者

以下是我重现该问题所遵循的步骤:

在 .comp 文件中声明一个具有起始值的指针变量:
variable double *my_ptr = NULL;

这是我期望发生的事情:

Halcompile 应在导出函数中生成此代码:
inst->my_ptr = NULL;

这是发生了什么:

它生成以下代码:
inst->*my_ptr = NULL;
这当然不会编译。

有关我的硬件和软件的信息:

最新的 Git 大师。我没有尝试过以前的版本

如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码 #634
贡献者作者

更正以上信息:此错误出现在 2.7.14。我没有测试大师。

如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码 #634
合作者

这似乎之前没有引起注意,因为之前没有人尝试在声明行中初始化指针。
(添加了 comps 中的指针,以便 mesa_7i65.comp 可以工作)

一个解决方法是在 EXTRA_SETUP 中初始化,或者实际上让它未初始化。

可以说,无论程序员是否这样做,halcompile 都应该自动初始化为 NULL。

如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码 #634
贡献者作者

是的,我猜这是一个边缘案例。正如您所建议的那样,我改为在 EXTRA_SETUP 中对其进行了初始化。

如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码 #634 andypugh 自己分配了这个 2019 年 8 月 15 日
如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码 #634
成员

请注意,因为整个实例的数据 memset 为 0,这相当于将任何指针变量初始化为 NULL,将任何数字初始化为 0,等等。

如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码 #634
成员

(这个,所有位零初始化和 NULL 指针或浮点零值之间的等价性在 C99 标准下并不严格正确,但在 LinuxCNC 运行的任何系统中都是正确的)

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

3人参加
如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码 #634如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码 #634如果您声明具有起始值的指针,Halcompile 会生成不正确的 C 代码 #634

喜欢 (0)