52015


C 言語のプログラムで、アンダースコア (アンダーライン) と丸括弧の中に文字列が書かれているのを見つけました。これは何をしているのでしょうか？

[code]

    fprintf(stderr, _("Try `%s --help' for more information.\n"), command);
    
[/code]


CC BY-SA 4.0
2019-01-16T08:26:33.070
52014
2019-01-16T08:26:33.070
19110
question
c
アンダースコアと括弧で囲まれた文字列はなんですか？


これは単なる関数適用で、`_` (アンダースコアひとつ) という名前の関数の引数に文字列を渡しています。

私の場合、[GNU gettext](https://www.gnu.org/software/gettext/) ライブラリの慣例として使われる `_(
... )` でした。よくあるのはマクロを下のように定義しておいて、

[code]

    #define _(String) gettext (String)
    
[/code]

それから `_("翻訳対象の文字列")` という風に使うことです。この関数は渡された文字列を実行時に翻訳して出力しようとします。

### 参考

  * [How Marks Appear in Sources](https://www.gnu.org/software/gettext/manual/html_node/Mark-Keywords.html) \-- GNU gettext utilities
  * [Underscore function](https://stackoverflow.com/q/3336056/5989200) \-- Stack Overflow
  * [What does _(“text”), i.e. underscore bracket char, do?](https://stackoverflow.com/q/15244397/5989200) \-- Stack Overflow


CC BY-SA 4.0
2019-01-16T08:26:33.070
52015
2019-01-16T08:26:33.070
19110
52014
answer