что * здесь определяют для?

#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* a а также myObject *a (положение *)

-4

Решение

Что такое static?

Это означает разные вещи в разных контекстах; вам нужно прочитать вашу книгу, чтобы понять все ее значения. В этом случае это означает, что функция доступна только внутри этого исходного файла, а не в любом, который скомпилирован отдельно и затем связан с ним.

Что такое xyz делать с static?

Вызывает путаницу. Это пустой макрос (определенный в первой строке), поэтому перед компиляцией программы препроцессор ничего не заменит.

Почему есть * перед __my_getitem

* после того, как тип меняет тип на указатель; так что это означает, что функция возвращает указатель на myObject, (Кстати, вы никогда не должны объявлять имя с двумя последовательными _ персонажи; такие имена зарезервированы.)

Какая разница между myObject* a а также myObject *a (позиция *)

Ничего вообще; Пробел никогда не меняет смысла программы, кроме случаев, когда это необходимо для разделения токенов. Некоторые люди ведут священные войны за семантические значения этих двух стилей, но язык не заботится.

2

Другие решения

Что такое статическое?

Определения функций, которым предшествует «static», имеют ограниченную область действия. Они могут быть видны и использоваться только функциями в одном и том же исходном файле. Это можно сделать, если у вас есть функция, которая не имеет значения вне обработки, происходящей в текущем файле, или вы хотите ограничить использование, чтобы ее можно было изменить в будущем с меньшими последствиями из-за ее ограниченного объема.

Что делает XYZ со статическим

В этом конкретном случае xyz заменяется ничем, поэтому он ничего не делает. В общем случае, вероятно, будет изменено, как компилятор генерирует эту функцию, изменив «соглашение о вызовах». То есть xyz будет иметь какое-то значение для компилятора и не является частью языка Си.

Почему перед звездочкой стоит __my_getitem

Это показывает, что функция __my_getitem возвращает указатель на myObject.

В чем разница между myObject * a и myObject * a (позиция *)

Ничего, так как синтаксис гибкий.

2