有人可以解释下面代码中实际定义的内容,以及最后的const是什么?命名变量__user和__argv类型指针是否已__user创建?
const char __user *const __user *__argv
Run Code Online (Sandbox Code Playgroud)
我熟悉放置的可能性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)
Run Code Online (Sandbox Code Playgroud)
编辑:我可能不会问过我__user以前对宏的了解.尽管如此,它并不完全与此重复,因为那里没有讨论定义变量的实际类型.
是否可以在模板外部访问类模板参数的功能?我尝试了以下但没有成功:
class A {
public:
void func () { std::cout << ("A called"); }
};
template<class T>
class tClass {
public:
T* operator->() {
return mem;
}
T* operator*() {
return mem;
}
const T* operator->() const {
return mem;
}
const T* operator*() const {
return mem;
}
private:
T* mem;
};
Run Code Online (Sandbox Code Playgroud)
在主要:
tClass<A>* t = new tClass<A>();
t->func();
Run Code Online (Sandbox Code Playgroud)
我得到以下编译器错误:error: 'class tClass<A>' has no member named 'func'
不重写->操作符返回指向模板参数的指针?我问,因为我看到一个非常相似的代码正在运行.我也看到了其他建议使用的答案typedef,但我不确定它在这里是如何应用的.
忽略mem现在没有初始化对象的事实.
提前致谢!