首页 > 解决方案 > 为什么将文件从 .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};
//                     ^                   

这对我来说似乎很奇怪,但请注意,这是我制作的第一个头文件之一。

标签: cstructheader

解决方案


我不认为将代码从 .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;
};

推荐阅读