gpt4 book ai didi

c - 在头文件和c文件中定义typedef结构

转载 作者:行者123 更新时间:2023-11-30 19:19:56 25 4
gpt4 key购买 nike

我正在尝试为我正在制作的东西定义一个新类型,这是准系统版本:

vector .h

#ifndef HEADER_GUARD_VECTORS
#define HEADER_GUARD_VECTORS

typedef struct {
double x;
double y;
double z;
vector2 operator=(vector2 vector);
}
double vector2_get_angle(vector2 vector);
#endif

vector .c

#include <math.h>

#define PI 3.14159265

typedef struct {
double x;
double y;
inline vector2 operator=(vector2 value)
{
x = value.x;
y = value.y;
return value;
}
} vector2;

double vector2_get_angle(vector2 vector)
{
return atan2(vector.y,vector.x) * (180.0 / PI);
}

测试.c

#include <stdio.c>
#include "vectors.h"

int main(int argc, const char* argv[])
{
printf("Hello World\n");
vector2 vec = {x=1, y=2};
printf("Vector: %d, %d ",vec.x,vec.y);
printf(" has an angle of %d degrees\n",vector2_get_angle(vec));
return 0;
}

生成文件

CFLAGS = -Wall -lm -lc -lgcc

all: test

test: vectors.o test.o
gcc test.o vectors.o -o test

test.o: test.c
gcc -c $(CFLAGS) test.c

vectors.o: vectors.c
gcc -c $(CFLAGS) vectors.c

进行命令反馈

$ make
gcc -c -Wall -lm -lc -lgcc vectors.c
vectors.c:8:2: error expected specifier-qualifier-list before ?inline?
vectors.c:20:33: warning: ?struct vector2? declared inside parameter list [enabled by default]
vectors.c:20:33: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
vectors.c:20:41: error: parameter 1 (?vector?) has incomplete type
vectors.c: In function ?vector2_get_angle?:
vectors.c:23:1: warning: control reaches end of non-void function [-Wreturn-type]

现在我的主要问题:

如何在 header 和 Vectors.c 源文件中正确定义类型,以便我可以如 test.c 中所示使用它。

感谢您阅读我的问题

最佳答案

How do i define the type correctly in the header and the vectors.c source file so that i can use it as shown in test.c.

您必须用正确的编程语言编写它。您的代码在 C 中无效,因为它不支持运算符重载或任何其他 C++ 功能。

此外,C99标准中引入了inline关键字,因此必须使用-std=c99进行编译。

此外,typedef struct {} 需要以类型名称结尾。

此外,vector2 未在头文件范围内的任何位置定义。

关于c - 在头文件和c文件中定义typedef结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23562883/

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