#define xyz
static xyz myObject *__my_getitem (myObject* a, myObject *b) {
myObject *r;
.........
........
return r;
}
- 是什么
static
? xyz
在做什么static
- 为什么
*
前面有个__my_getitem
myObject* a
和myObject *a
(的位置*
)有什么区别
什么是静态?
以“静态”开头的函数定义的范围有限。它们只能被同一源文件中的函数看到和使用。当您有一个在当前文件中进行的处理之外没有任何价值的函数时,您可以这样做,或者您希望限制使用,以便将来可以修改它,由于其范围有限,影响较小。
xyz 对静态有什么作用
在这种特定情况下,xyz 被替换为空,因此它什么也不做。在一般情况下,它可能会修改编译器生成此函数的方式,更改“调用约定”。也就是说,xyz 对编译器有一定的意义,它不是 C 语言的一部分。
为什么__my_getitem前面有一个星号
它表明 __my_getitem 函数返回一个指向 myObject 的指针。
myObject* a 和 myObject *a 有什么区别(* 的位置)
没什么,因为语法很灵活。
是什么
static
?
它在不同的上下文中意味着不同的事物;你需要阅读你的书才能理解它的所有含义。在这种情况下,这意味着该函数仅在此源文件中可用,而不是在任何单独编译然后链接到它的文件中。
xyz
在做什么static
?
造成混乱。它是一个空宏(在第一行中定义),所以在编译程序之前,预处理器将用空替换它。
为什么
*
前面有个__my_getitem
*
在类型将类型更改为指针之后;所以这意味着该函数返回一个指向 a 的指针myObject
。(顺便说一句,你不应该声明一个包含两个连续_
字符的名称;这样的名称是保留的。)
myObject* a
和myObject *a
(*的位置)有什么区别
什么都没有;空格永远不会改变程序的含义,除非需要分隔标记。有些人就这两种风格的语义含义进行了圣战,但语言并不在意。