小编Ala*_*ins的帖子

C/C++结构不完整的成员类型不一致?

假设我们在C或C++中定义了两个结构(我在C和C++中得到相同的结果,我认为规则是相同的,告诉我它们是否不相同).

一个值不完整的值成员:

struct abc{
  int data;
  struct nonexsitnow next; //error: field ‘next’ has incomplete type, makes sense since "struct nonexsitnow" hasn't been declared or defined.
};
Run Code Online (Sandbox Code Playgroud)

以及一个不完整类型的指针成员:

struct abc{
  int data;
  struct nonexsitnow *next; //pass?!
};
Run Code Online (Sandbox Code Playgroud)

为什么第二个定义不会导致任何问题?它使用struct nonexsitnow尚未创建!

更新:

我在下面的答案和评论中总结了这张表,希望它们对于详细说明是正确和有用的.

正如@ArneVogel提到,无论是struct Foo p;struct Foo *p;是一个隐含的声明Foo,并struct Foo;明确地做这件工作(感谢@约翰布林).这对几乎没有任何意义,但对和行为有所不同:

               In a situation where struct Foo is:
_______________________________________________________
|               | undeclared | declared but | defined |
|               | …
Run Code Online (Sandbox Code Playgroud)

c c++ struct pointers

12
推荐指数
3
解决办法
1675
查看次数

chrome是否真的为每个标签创建了流程?

  • 操作系统概念,第9版,第123页,“多进程体系结构-铬浏览器”
  • 在这一部分,作者说每个选项卡代表一个单独的过程,但是当我查看任务管理器(windows)时,“ Google Chrome”下只有一个过程,例如,现在是Stack Overflow,我仍在打开其他标签,为什么不能在任务管理器中找到它?
  • 还有其他一些“过程”,但是我认为与这些选项卡没有任何关系,因为当只有一个选项卡时,它们仍在此处。那么如何理解书中所说的呢?

operating-system google-chrome taskmanager

2
推荐指数
1
解决办法
2828
查看次数