__has_embed (The C Preprocessor)

#### 4.2.13 `__has_embed` ¶

The special operator `__has_embed (operands)` may be used in ‘`#if`’ and ‘`#elif`’ expressions to test whether a binary resource specified by the first operand with optional ‘`#embed`’ parameters can be included using the ‘`#embed`’ directive (see Binary Resource Inclusion) with the same parameters. The operator returns `__STDC_EMBED_NOT_FOUND__` if either the binary resource does not exist or at least one of the parameters is not supported by the implementation, `__STDC_EMBED_FOUND__` if all the parameters are supported and the resource is not empty and finally `__STDC_EMBED_EMPTY__` if all the parameters are supported and the resource is empty. The support of `__has_embed` operator can be tested with ‘`#ifdef`’ etc. similarly to `__has_include` and the same rules on how to test it apply. `__FILE__` can be often used to test if an implementation supports some implementation defined parameter, e.g.

    #ifdef __has_embed
    #if __has_embed (__FILE__ limit (4) myvendor::myattr (42)) != __STDC_EMBED_NOT_FOUND__
    #embed "foo.dat" limit (4) myvendor::myattr (42)
    #endif
    #endif

The `__has_embed` operator is not supported in the Traditional Mode (see Traditional Mode).