Traducir de C a C

zildjian

Hola MVeros, sí, habéis leído bien. Me he topado con un código en el que hay algo que no se interpretar y me preguntaba si hay alguna otra manera de expresarlo. El trozo en cuestión es el siguiente:

#define ROTATE(a,i,j,k,l) g=a[i][j];h=a[k][l];a[i][j]=g-s*(h+g*tau);\
    a[k][l]=h+s*(g-h*tau);

Gracias de antemano!

Dod-Evers

Supongo que será algo con matrices no? xD

BLZKZ

no es tan dificil, está manejando valores de posiciones de una matriz todo el rato :S

#define ROTATE(a,i,j,k,l)

g=a[i][j];
h=a[k][l];
a[i][j]=g-s*(h+g*tau);
a[k][l]=h+s*(g-h*tau);
m0rG

Es una macro,una directiva del preprocesador parecida a cuando defines una constante (#define PI 3.14 por ejemplo) solo que en este caso cuando se compila el programa en vez de sustituirse el nombre de la macro por un número se sustituye por un conjunto de órdenes(como si fueran una función).Si no quieres usar esto tendrías que poner lo que dijo #3 en todos los lugares en los que aparezca una "llamada" a la macro(no son llamadas como tal,es una forma de hablar,simplemente es darle un nombre a un conjunto de órdenes para que el código sea más legible).

En estos enlaces tienes una explicación más detallada de qué son y por qué se utilizan:

http://laurel.datsi.fi.upm.es/rpons/personal/trabajos/curso_c/node90.html
http://gcc.gnu.org/onlinedocs/cpp/Function_002dlike-Macros.html#Function_002dlike-Macros

Usuarios habituales

  • m0rG
  • BLZKZ
  • Dod-Evers
  • zildjian