"Kyle J. McKay" <mackyle@xxxxxxxxx> writes: > For now only __GNUC__ is tested which covers both gcc and clang > which should result in early detection of any adjacent N_ macros. I didn't check the list of -W options, but if there were a way to tell gcc to stick to the C standard in a more strict way than its default, wouldn't this patch start causing trouble? > Although the necessary #ifdef makes the header less elegant, > the benefit of avoiding propagation of a translation-marking > error to all the translation teams thus creating extra work > for them when the error is eventually detected and fixed would > seem to outweigh the minor inelegance the #ifdef introduces. > > Signed-off-by: Kyle J. McKay <mackyle@xxxxxxxxx> > --- > gettext.h | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/gettext.h b/gettext.h > index 7671d09d..80ec29b5 100644 > --- a/gettext.h > +++ b/gettext.h > @@ -62,7 +62,19 @@ const char *Q_(const char *msgid, const char *plu, unsigned long n) > return ngettext(msgid, plu, n); > } > > -/* Mark msgid for translation but do not translate it. */ > +/* Mark msgid for translation but do not translate it. > + * > + * In order to prevent accidents where two adjacent N_ macros > + * are mistakenly used, this macro is defined with parentheses > + * when the compiler is known to support parenthesized string > + * literal assignments. This guarantees a compiler error in > + * such a case rather than a silent conjoining of the strings > + * by the preprocessor which results in translation failures. > + */ > +#ifdef __GNUC__ > +#define N_(msgid) (msgid) > +#else > #define N_(msgid) msgid > +#endif > > #endif -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html