glademm 2.5: Why does non-NLS version undefine gettext() etc?
- From: Toralf Lund <toralf procaptura com>
- To: GTK-- Mailing List <gtkmm-list gnome org>
- Subject: glademm 2.5: Why does non-NLS version undefine gettext() etc?
- Date: Thu, 25 Nov 2004 16:16:36 +0100
From a glademm-2.5 generated source code file:
#ifdef ENABLE_NLS
# include <libintl.h>
# undef _
# define _(String) dgettext (GETTEXT_PACKAGE, String)
# ifdef gettext_noop
# define N_(String) gettext_noop (String)
# else
# define N_(String) (String)
# endif
#else
# define textdomain(String) (String)
# define gettext(String) (String)
# define dgettext(Domain,Message) (Message)
# define dcgettext(Domain,Message,Type) (Message)
# define bindtextdomain(Domain,Directory) (Domain)
# define _(String) (String)
# define N_(String) (String)
#endif
Why does the #else branch do all this? I mean, shouldn't it just define
_() and N_(), and leave gettext() etc. alone? Isn't the point of using
_()/_N() precisely to avoid overriding the "gettext" calls themselves?
The above construction leads to a compilation error if you don't define
ENABLE_NLS, but happen to include libintl.h anyway - like this:
/usr/include/libintl.h:40: parse error before `__const'
/usr/include/libintl.h:44: parse error before `__const'
/usr/include/libintl.h:51: parse error before `__const'
/usr/include/libintl.h:81: parse error before `__const'
/usr/include/libintl.h:85: parse error before `__const'
which is due to the fact that the function prototypes will be changed by
macro expansion, so that e.g.
extern char *gettext (__const char *__msgid) __THROW;
becomes
extern char *(__const char *__msgid) throw ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]