【问题标题】:Returning a struct in a void func()在 void func() 中返回结构
【发布时间】:2021-12-11 00:22:39
【问题描述】:

我正在尝试从旧的 MS-DOS 时代编译我的代码,但这似乎不适用于 GCC:

    typedef struct { int x,y,z; } vector;

    inline void vect_add(vector& c,vector a, vector b)
    {
        c.x=a.x+b.x;
        c.y=a.y+b.y;
        c.z=a.z+b.z;
    }

基本上,我试图返回一个结构,该结构稍后用作 vector.x 等,而不是将其重写为指向结构的指针并将所有内容重写为 vector->x 等

(vector&c,

【问题讨论】:

  • C 没有您尝试使用的 C++ 样式参考语法。
  • C 没有引用。您需要使用指针模拟它。
  • 如@EugeneSh 所述。您尝试使用的语法是 C++。您确定您要构建的项目不是 C++ 项目吗?
  • 我假设这个 used 工作?所以你可能需要确保 GCC 在 C++ 模式下正确运行,而不是在 C 模式下。
  • 源代码文件的名称是什么?您使用的是g++ 还是gcc

标签: c gcc


【解决方案1】:

这可能是有效的 C++,但不是有效的 C。

在 C 中,您需要使用指针、全局变量或实际返回结构。

typedef struct { int x, y, z; } vector;

inline void vect_add(vector* c, vector a, vector b)
{
    c->x = a.x + b.x;
    c->y = a.y + b.y;
    c->z = a.z + b.z;
}

vect_add(&c, a, b);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2017-06-07
    相关资源
    最近更新 更多