Voici mon problème:

comme tout progammeur qui se respecte, moins j'écris de code et plus je suis content (ça n'engage que moi...)

Je m'explique: je développe un logiciel et pour gérer les erreurs, j'aimerais redéfinir des fonctions et des opérateurs. Exemple:

pour la fonction strcat, j'aimerais utiliser la version de mon compilateur en mode release et une version personnalisée en mode debug.

mode release: strcat(tab1, tab2);

mode debug: static char* strcat(char*, const char*);
strcat(tab1, tab2);

Cette solution fonctionne sauf que le souci c'est que en mode debug, la fonction strcat personnalisée devrait prendre un nombre de paramètres différents:

strcat(tab1, tab2, sizeof(tab1), sizeof(tab2), _LINE_, _FILE_);

C'est possible avec une surcharge mais ça m'obligerai à écrire à chaque fois dans mon programme:

#ifdefine _DEBUG
strcat(tab1, tab2, sizeof(tab1), sizeof(tab2), _LINE_, _FILE_);
#else
strcat(tab1, tab2);

sauf que j'aimerais écrire uniquement strcat(tab1, tab2); dans tout le programme.

Est-ce qu'avec un #define ou une macro, ce serait possible?

Même chose pour l'opérateur new:

mode debug: pointeur = new (TypePointeur, _LINE_, _FILE_);

mode release: pointeur = new (TypePointeur);

Actuellement j'expérimente des solutions, mais votre aide ne sera pas de refus, merci.