具有联合成员名称与其类型名称相同的C代码

时间:2020-10-30 16:46:09

标签: c arduino atmel atmelstudio

我目前正在使用C语言编写一些微控制器代码,并且我正在使用的第三方库之一以以下方式定义了一些结构和联合:

typedef struct
{
    ...members of struct...
} somename;

typedef struct
{
    ...members of struct...
} somename2;

typedef union
{
    somename somename;
    somename2 somename2;
} anothername;

该代码在Atmel Studio 7中编译(不确定使用的是底层编译器),但是在Arduino IDE(我相信使用的是gcc / g ++版本)中无法编译。

以上代码是否有效C?还是有效的C ++?还是有效?对于我来说,这段代码的作者给这个工会的成员一个变量名类型名相同,这恰好是他们定义的结构,这对我来说似乎很奇怪在文件上方。

无论如何,Arduino编译器在到达此代码时会引发错误,因此我试图弄清楚它是否是有效代码以及如何使Arduino编译器像这样。有什么建议?谢谢!

1 个答案:

答案 0 :(得分:0)

Ir默认情况下是作为C ++编译的,因此您需要添加-xc命令行选项。

据我所知,C ++不允许类型和对象使用相同的名称。