当前位置: 首页 > 知识库问答 >
问题:

不完全类型结构的初步定义

云季萌
2023-03-14

将以下文件视为C文件:

static struct S a;

int main() {
  return (long)&a;
}

struct S {
  int b;
} s;

但是,使用--std=c11-wall-pedantic标志运行时,GCC不打印任何诊断。是我误解了标准,还是GCC没有打印这种未定义行为的诊断?

共有1个答案

后树
2023-03-14

是的。这是未定义的。

未定义的行为只是术语所表示的,它不是由标准定义的。任何编译器都可以添加自己的定义,从而扩展标准,而不必诊断其中的任何定义。特别是gcc对暂定定义有一些特别的想法。使用这些代码的代码是不可移植的。

 类似资料:
  • 4.4.2 结构类型的定义 重复说明符DUP只能用于重复同一数据类型的变量说明,它不可以重复不同数据类型的变量说明。为了把一组不同类型的变量说明组合在一起,汇编语言提供了另一种复合数据类型说明符——结构类型说明符STRUC。 1、结构类型的定义 用STRUC和ENDS可以把一系列数据定义语句括起来作为一种新的、用户定义的结构类型。其一般说明格式如下: 结构名 STRUC [Alignment][,

  • 问题内容: 尽管包括我,但我得到一个错误,说那是不完整的类型。 我不知道该怎么办。 请帮忙 错误消息: 问题答案: 只是 在代码中的任何其他行之前,或使用定义定义预处理程序符号的选项进行编译

  • 结构体(structure,缩写成 struct)有 3 种类型,使用 struct 关键字来创建: 元组结构体,总的来说是根据元组来命名。 C 语言风格的结构体 c_struct。 单元结构体,不带字段,在泛型中很有用。 // 单元结构体 struct Nil; // 元组结构体 struct Pair(i32, f32); // 带有两个字段的结构体 struct Point { x:

  • 我有两个不同的CompletableFuture,我喜欢并行运行(每个都有不同的返回类型),然后结合它们的结果: 现在我喜欢把dog.name 我想用 但我在这里很烂。

  • 在该示例中,标识符和之间的相应区别是什么?据我所知,结构绑定中的也有一个引用类型,但是为什么为它指明了一个非引用类型呢?

  • 本文向大家介绍C++中结构体的类型定义和初始化以及变量引用,包括了C++中结构体的类型定义和初始化以及变量引用的使用技巧和注意事项,需要的朋友参考一下 C++结构体类型的定义和初始化 有时需要将不同类型的数据组合成一个有机的整体,以供用户方便地使用。这些组合在一个整体中的数据是互相联系的。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,都是这个学生的属性,见图 可以看到学号(num)、