*这里定义了什么?

时间:2012-09-05 10:27:55

标签: c++ c

#define xyz

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

2 个答案:

答案 0 :(得分:2)

什么是静态?

以“static”开头的函数定义的范围有限。它们只能由同一源文件中的函数查看和使用。当你的函数没有在当前文件中发生的处理之外没有任何值时,你会这样做,或者你想限制使用,以便将来可以修改它,因为它的范围有限,所以可以减少后果。

什么是xyz使用静态

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

为什么<* em> __my_getitem

前面有一个星号

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

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

没有,因为语法很灵活。

答案 1 :(得分:2)

  

什么是static

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

  

xyzstatic做什么?

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

  

为什么*

前面有__my_getitem
在类型将类型更改为指针后

*;所以这意味着该函数返回一个指向myObject的指针。 (顺便说一句,你不应该声明一个带有两个连续_个字符的名字;这样的名字是保留的。)

  

myObject* amyObject *a之间的差异(*的位置)

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