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