当我查看Linux内核代码时,找到以下代码:
struct thread_info {
struct task_struct *task;
struct exec_domain *exec_domain;
unsigned long flags;
__u32 status;
__u32 cpu;
int preempt_count;
mm_segment_t addr_limit;
struct restart_block restart_block;
void __user *sysenter_return;
unsigned long previous_esp;
__u8 supervisor_stack[0];
};
Run Code Online (Sandbox Code Playgroud)
注意最后一个变量"supervisor_stack",它是一个零长度数组,它的用法是什么?提前致谢!
C++ 03标准规定§1.8[intro.object]/4:
如果完整对象,数据成员(9.2)或数组元素属于类类型,则其类型被视为派生类最多的类,以区别于任何基类子对象的类类型; 最派生类类型的对象称为最派生对象.
任何人都可以对"最衍生的对象"有所了解吗?一些例子将非常感谢.
我曾经看过一段代码如下,
/** Starts a synchronized block
*
* This macro starts a block synchronized on its argument x
* Note that the synchronized block defines a scope (i.e. { })
* All variables declared in it will live inside this block only
*/
#define SYNCHRONIZE_ON(x) { \
const abcd::LockBase & __lock = \
abcd::MakeLock(x); __lock;
/** Ends a synchronized block */
#define END_SYNCHRONIZE }
Run Code Online (Sandbox Code Playgroud)
的SYNCHRONIZE_ON和END_SYNCHRONIZE一起用来在物体上同步.宏在它的块中SYNCHRONIZE_ON定义了一个变量____lock.
这里的问题是:句子__lock;(之后abcd::MakeLock(x);)是什么?请注意,该句子仅包含变量名称.