c - 为什么将文件从 .c 更改为 .h 时出现错误?
问题描述
我正在尝试制作一个头文件,用于将向量绘制到坐标系的程序中,代码的问题部分如下所示:
struct vector {
float x, y;
};
struct vector vectoradd(struct vector V, struct vector W) {
return (struct vector) {V.x + W.x, V.y + W.y};
}
如果我将它作为 .c 文件运行,这将完美无缺,但如果我将文件扩展名更改为 .h 并添加#pragma once
,Visual Studio 会在这部分代码下划线:
return (struct vector) {V.x + W.x, V.y + W.y};
// ^
这对我来说似乎很奇怪,但请注意,这是我制作的第一个头文件之一。
解决方案
我不认为将代码从 .c 移动到 .h 是导致问题的原因,因为 .h 文件是与包含它们的 .c 文件一起编译的。原始文件是否确实是 .c 文件,但包含 .h 的新文件是.cpp?
如果是这种情况,您不能只使用临时变量而不是非标准语法吗?另外,inline
如果我真的想要它在 .h 中并在所有地方复制得那么糟糕,我也会添加:
inline struct vector vectoradd(struct vector V, struct vector W)
{
struct vector tmp = {V.x + W.x, V.y + W.y};
return tmp;
};