ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
The underscore is just an identifier. Either the program itself or a library uses it, and defines it as a function or a macro. _() Might return the text inside of fprint to translate to a different language, add formatting, etc. Hope that helps.
Sprinkled throughout the coreutils code are macro definitions of the form
Code:
#define _(fred) gettext (fred)
There are 28 of those, at last count.
They don't use fred, of course, and it doesn't matter what they use; the macro _ is defined as a call to gettext() with the argument to the macro. gettext() returns a string. For more details on gettext(), see the man page.
If you read the sources carefully, you will very likely find something like
Code:
#ifdef HAVE_GETTEXT
#define _(s) gettext(s)
#else
#define _(s) s
#endif
Like corp769 said, _() is usually a macro used to make string localization easier. The above way also allows the same code to be compiled without localization support without changing any code. For details, see eg. man 3 gettext.
Thanks. I'll admit, I haven't read all the source code yet but am working on it. I must have missed that macro definition. I assumed it was some kind of special C construct I hadn't heard about yet.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.