Esta es una colección de Macros para poder manipular las cadenas de texto o VARCHAR.
#define vcharcpy(x, y) {strncpy((char *) x.arr, (char *) y.arr,\
(unsigned int) y.len);\
x.len = y.len; x.arr[x.len] = (unsigned char) NULL;}
/* Copia varchar Y en varchar X y delimita el varchar X con NULL */
#define vcharlim(x) x.arr[x.len] = (unsigned char) NULL
/* Delimita varchar X con un NULL. */
#define vcharlen(x) x.len = (unsigned short) strlen((char *) x.arr)
/* Asigna X.len en funcion de X.arr */
#define vcharnul(x) {x.len = (unsigned short) 0; \
x.arr[0] = (unsigned char) NULL; }
/* Pone a NULL el varchar X. */
#define vcharstr(x, y) {strcpy((char *) x.arr, y); \
x.len = (unsigned short) strlen((char *) x.arr); \
x.arr[x.len] = (unsigned char) NULL;}
/* Copia el string Y en el varchar X y delimita el varchar X con NULL */
#define vcharcat(x, y) {strcat((char *) x.arr, (char *) y.arr); \
x.len = (unsigned short) strlen((char *) x.arr); }
/* Concatena varchar Y al varchar X. */
#define vcharcst(x, y) {strcat((char *) x.arr, y); \
x.len = (unsigned short) strlen((char *) x.arr); }
/* Concatena el string Y al varchar X. */
#define strvchar(x, y) {strncpy(x, (char *) y.arr, (unsigned int) y.len); \
x[y.len] = (char) NULL; }
/* Copia el varchar Y en el string X. */
Como habéis podido observar con poner (\) podemos continuar en la siguiente línea sin problemas.