C++ C++;typedef联合编译错误
当我试图为这些联合定义几个联合和内联函数时,我在VC++2010 Express中遇到了一些有趣的错误。我正在尝试构建一个静态库,以便在许多程序中使用C++ C++;typedef联合编译错误,c++,visual-c++,compiler-errors,C++,Visual C++,Compiler Errors,当我试图为这些联合定义几个联合和内联函数时,我在VC++2010 Express中遇到了一些有趣的错误。我正在尝试构建一个静态库,以便在许多程序中使用 typedef union { double data[3]; struct { double x, y, z; }; } VECTOR3; inline VECTOR3 _V3(double x, double y, double z) { VECTOR3 vec = { x, y, z }; return v
typedef union
{
double data[3];
struct { double x, y, z; };
} VECTOR3;
inline VECTOR3 _V3(double x, double y, double z)
{
VECTOR3 vec = { x, y, z };
return vec;
}
typedef union
{
double data[9];
struct { double x0, y0, z0, x1, y1, z1, x2, y2, z2; };
} MATRIX3;
inline MATRIX3 _M3(double x0, double y0, double z0, double x1, double y1, double z1, double x2, double y2, double z2)
{
MATRIX3 mat3 = { x0, y0, z0, x1, y1, z1, x2, y2, z2 };
return mat3;
}
此代码产生错误“C2371:重新定义;不同的基本类型”,但这是定义这些联合的唯一地方
内联函数产生错误“C2084:function'FunctionName(ArgumentType)'已经有一个主体”,但没有定义其他主体。在该文件中,或在引用的任何文件中
此外,这里所示的代码在另一个应用程序的SDK中。并且使用该SDK的构建不会产生任何这些错误
我的搜索没有任何帮助。我想这段代码在头文件(.h)中 您需要: 它避免了在同一文件中多次包含同一文件
如果此头文件多次(有时通过其他头文件)包含在同一源文件中,则您的联合将被定义多次,除非您有包含保护。我假设此代码位于头文件(.h)中 您需要: 它避免了在同一文件中多次包含同一文件
如果此头文件多次(有时通过其他头文件)包含在同一源文件中,则您的联合将被定义多次,除非您有include guard。这是C代码。C++在这个上下文中不允许匿名结构,这是C代码。在这个上下文中,C++不允许匿名结构。第二行是指您已经定义了“y-YouFieleHHyLILB文件”。谢谢。@TimothyChapman请不要使用带有双下划线的标识符,它们是。include-guard的更好名称是
FILENAME\u H
,或者NAMESPACE\u FILENAME\u H
,或者甚至是NAMESPACE\u FILENAME\u H\u datetime\u或\u guid\u或\u任何内容
您所指的第二行定义文件\u H\u库文件已经成功构建。谢谢。@TimothyChapman请不要使用带有双下划线的标识符,它们是。include-guard的更好名称是FILENAME\u H
,或者NAMESPACE\u FILENAME\u H
,甚至是NAMESPACE\u FILENAME\u H\u datetime\u或\u guid\u或\u where
#ifndef YOUFILE_h__
# define YOUFILE_h__
// Your code
#endif // !YOUFILE_h__