As others have noted, char[100] foo
is legal Java but not legal C or C++, at least in the dialects I've used.
I'm not guaranteeing it, but you could try:
typedef char Char100[100];
DECLARE_PARAM(Char100, titre);
I suspect that would work. HOWEVER, using macros to add syntax to the language is almost always a bad idea. You really aren't saving yourself that much work, and you're creating a not-quite-C program which will be harder for other C programmers to work with. Don't do it for trivial things like this, and if you must do it document it to death.
Especially since you can say the same thing more clearly as
typedef char Char100[100];
Char100 titre;
RESPONDING TO EDIT FOR "CONTEXT":
Default parameters is a very different question. For that, define wrapper functions which take a subset of the arguments and fill in the missing values before calling the general version. Or define the function to recognize a reserved value (null, or -1, or something else that won't otherwise occur) as a request to use the default value for that parameter. Much cleaner than trying to warp the syntax of the language.