GCC compile time string comparison

Jonathan Wakely jwakely.gcc@gmail.com
Thu Aug 18 10:59:00 GMT 2011


On 18 August 2011 11:52, Pintu Agarwal wrote:
> Hi,
>
> I wanted to do compile time string const comparison in a macro call
> but I could not find anything in GCC.
>
> I tried using __builtin_ extended option but it is not working inside a macro.
> Here is the sample code:
>
> #define STRCMP(s1,s2)       __builtin_strcmp(s1,s2)
>
> int main()
> {
>        #if STRCMP("pintu1","pintu2")
>                printf("Equal...\n");
>        #else
>                printf("Not Equal...\n");
>        #endif
>
>        return 0;
> }
>
> But I am getting this error : error: missing binary operator before token "("
>
> I tried other option such as __builtin_expect, __builtin_constant_p
> etc but same problem when used inside macro call

The preprocessor can only expand macros and perform simple arithmetic
on constant expressions, it can't call functions. That includes
builtin functions.

Compile-time string comparison is just about possible by abusing C++
templates, but you probably don't want to go there.



More information about the Gcc-help mailing list