diff options
Diffstat (limited to 'gettext.h')
-rw-r--r-- | gettext.h | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -63,6 +63,30 @@ const char *Q_(const char *msgid, const char *plu, unsigned long n) } /* Mark msgid for translation but do not translate it. */ +#if !USE_PARENS_AROUND_GETTEXT_N #define N_(msgid) msgid +#else +/* + * Strictly speaking, this will lead to invalid C when + * used this way: + * static const char s[] = N_("FOO"); + * which will expand to + * static const char s[] = ("FOO"); + * and in valid C, the initializer on the right hand side must + * be without the parentheses. But many compilers do accept it + * as a language extension and it will allow us to catch mistakes + * like: + * static const char *msgs[] = { + * N_("one") + * N_("two"), + * N_("three"), + * NULL + * }; + * (notice the missing comma on one of the lines) by forcing + * a compilation error, because parenthesised ("one") ("two") + * will not get silently turned into ("onetwo"). + */ +#define N_(msgid) (msgid) +#endif #endif |