有人可以解释下面的代码中实际定义了什么,以及最后是什么const? 是一个名为__user
的variables和__argv
types的指针__argv
__user
创build?
const char __user *const __user *__argv
我熟悉将const
放置(使指针/数据不可修改)的可能性,但我从来没有想过上述的可能性。
片段来自内核中的这个函数声明:
1593 int do_execve(const char *filename, 1594 const char __user *const __user *__argv, 1595 const char __user *const __user *__envp, 1596 struct pt_regs *regs)
编辑:我可能不会问我曾经有关于__user
macros的问题。 尽pipe如此,它并不完全相同,因为定义variables的实际types在这里没有讨论。
实际上, __user
是一个提供一些属性的宏(更多在这里 )。 所以,这个变量被命名为__argv
,它的类型指针是指向const char的const指针 。
const T *p
和T const *p
声明p
作为指向const T
的指针。
T * const p
声明为一个指向T
的const
指针。
const T * const p
和T const * const p
都将p
声明为const T
的const
指针。