FAQ sobre C
Continguts
Com es compila i munta quan tens diversos moduls?
La resposta curta i directa és, si tens els mòduls següents:
Mòdul mod1 que inclou el fitxer mod1.c i mod1.h
Mòdul mod2 que inclou el fitxer mod2.c i mod2.h
Mòdul principal princ que inclou el fitxer princ.c
cal compilar amb l'ordre de terminal següent:
1 $ gcc -std=c99 mod1.c mod2.c princ.c -o princ
Mireu l'exemple de ../ExemplesUnitTest si voleu veure-ho en un programa concret.
Per què a l'accedir al camp d'una tupla a través d'un apuntador dóna error?
Si tenim un codi com aquest:
A l'accedir al camp valor usant la expressió *t.valor es produeix un error sintàctic que diu:
p.c: In function ‘main’: p.c:11: error: request for member ‘valor’ in something not a structure or union
La raó s'ha de trobar en la prioritat dels operadors. Com veieu, . és més prioritari que *. Per tant l'expressió d'accés s'interpreta com *(t.valor), que no és el que es volia.
La forma correcta d'escriure-ho és (*t).valor. Si els parèntesis fan nosa estèticament, podeu escriure-ho també com t->valor, que queda més mono .