我的编码风格包括以下习语:
class Derived : public Base
{
public :
typedef Base super; // note that it could be hidden in
// protected/private section, instead
// Etc.
} ;
Run Code Online (Sandbox Code Playgroud)
这使我能够使用"super"作为Base的别名,例如,在构造函数中:
Derived(int i, int j)
: super(i), J(j)
{
}
Run Code Online (Sandbox Code Playgroud)
或者甚至在其重写版本中从基类调用方法时:
void Derived::foo()
{
super::foo() ;
// ... And then, do something else
}
Run Code Online (Sandbox Code Playgroud)
它甚至可以链接(我仍然可以找到它的用途):
class DerivedDerived : public Derived
{
public :
typedef Derived super; // note that it could be hidden in
// protected/private section, instead
// Etc.
} ; …Run Code Online (Sandbox Code Playgroud) #define int_p int*
int_p p1,p2,p3; // only p1 is a pointer !
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会如此.
任何人都可以解释它们之间的区别
#define int* char
Run Code Online (Sandbox Code Playgroud)
和
typedef int* char;
Run Code Online (Sandbox Code Playgroud) 我正在研究C中的微控制器项目.main.c文件包含一个标题,将所有寄存器定义为结构和字符.不幸的是,他们将寄存器命名为无意义的全名,如PORTA.是否可以将头文件中定义的结构和变量重命名为主文件中更有意义的内容?
因此,我可以在不修改定义它的头文件的情况下调用它来代替PORTA.