Я конвертирую блоки кода на C в Java, и натолкнулся на некоторый синтаксис, который я не совсем понимаю. Первый использует #define
для создания функции. Я лично не видел #define
для создания функций раньше. Я также только что узнал в этом посте, что это действительно macro
. Ниже вы увидите, что я пытался интерпретировать этот код как в Java.
Вот код C:
#define mat_elem(a, y, x, n) (a + ((y) * (n) + (x)))
Который я затем преобразовал в Java:
public double mat_elem(double a, int y, int x, int n){
return (a + ((y) * (n) + (x)));
}
Теперь реальная проблема заключается в том, что этот блок кода также использует #define
.
Код в C:
#define A(y, x) (*mat_elem(a, y, x, n))
Я еще не перешел на Java, потому что не очень уверен, что происходит.
Сначала я подумал, что #define A(y, x)
создает тип данных, равный тому, что возвращается в (*mat_elem(a, y, x, n))
. Однако указатель, который они используют перед mat_elem
, сбивает меня с толку.
Я думал сделать что-то подобное в Java:
public double[] fillA(double y, double x){
double [] A = new double [100];
for(int i = 0; i < some_var; i++){
A[i] = mat_elem(a, y, x, n);
}
return A;
}
Я уверен, что что-то подобное будет работать, однако моя главная задача - понять, что на самом деле делает код C, и если мой несовершенный код эквивалентен коду в C.