-4
#define xyz

static xyz  myObject *__my_getitem (myObject* a, myObject *b) {
     myObject *r;
     .........
     ........
     return r;
 }
  1. 是什么static
  2. xyz在做什么static
  3. 为什么*前面有个__my_getitem
  4. myObject* amyObject *a(的位置*)有什么区别
4

2 回答 2

2

什么是静态?

以“静态”开头的函数定义的范围有限。它们只能被同一源文件中的函数看到和使用。当您有一个在当前文件中进行的处理之外没有任何价值的函数时,您可以这样做,或者您希望限制使用,以便将来可以修改它,由于其范围有限,影响较小。

xyz 对静态有什么作用

在这种特定情况下,xyz 被替换为空,因此它什么也不做。在一般情况下,它可能会修改编译器生成此函数的方式,更改“调用约定”。也就是说,xyz 对编译器有一定的意义,它不是 C 语言的一部分。

为什么__my_getitem前面有一个星号

它表明 __my_getitem 函数返回一个指向 myObject 的指针。

myObject* a 和 myObject *a 有什么区别(* 的位置)

没什么,因为语法很灵活。

于 2012-09-05T10:38:28.987 回答
2

是什么static

它在不同的上下文中意味着不同的事物;你需要阅读你的书才能理解它的所有含义。在这种情况下,这意味着该函数仅在此源文件中可用,而不是在任何单独编译然后链接到它的文件中。

xyz在做什么static

造成混乱。它是一个空宏(在第一行中定义),所以在编译程序之前,预处理器将用空替换它。

为什么*前面有个__my_getitem

*在类型将类型更改为指针之后;所以这意味着该函数返回一个指向 a 的指针myObject。(顺便说一句,你不应该声明一个包含两个连续_字符的名称;这样的名称是保留的。)

myObject* amyObject *a(*的位置)有什么区别

什么都没有;空格永远不会改变程序的含义,除非需要分隔标记。有些人就这两种风格的语义含义进行了圣战,但语言并不在意。

于 2012-09-05T10:40:22.633 回答