Древние define-ы существовавшие до ANSI - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Я уже не в первый раз сталкиваюсь с подобными строками в коде C и C++:
    string_iconv_fprintf (stdout,
                          /* TRANSLATORS: "%s %s" after "compiled on" is date and time */
                          _("WeeChat %s Copyright %s, compiled on %s %s\n"
                            "Developed by Sebastien Helleu <removed@mail.ru> "
                            "- %s"),
                          PACKAGE_VERSION, WEECHAT_COPYRIGHT_DATE,
                          __DATE__, __TIME__, WEECHAT_WEBSITE);
А именно интересует вот эта конструкция

_("string")

. Что это такое вообще и зачем? А главное,как точно это работает,и почему я не в первый раз вижу это в примерах,касающихся именно переводов программ на другой язык? Гугл,сами понимаете,на чёрточку и скобочку не реагирует,но из того,что удалось найти, получается,что это какой-то древний define,который был ещё до ANSI
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/177129
Но и то там речь идёт о ruby. Кто-нибудь может раскрыть эту тему поподробнее? Я хотел сначала написать это в обсуждение FAQ по директивам, но х.з. где правильней.

Решение задачи: «Древние define-ы существовавшие до ANSI»

textual
Листинг программы
#include <stdio.h>
 
#define _(s) do { printf( "%s", s ); } while( 0 )
 
int main()
{
  _("hello");
  return 0;
}

Объяснение кода листинга программы

  1. Включаем заголовочный файл stdio.h, который содержит функции для ввода-вывода данных.
  2. Устанавливаем значение параметра order в 0.
  3. Задаем строку hello в качестве аргумента для функции printf.
  4. Выводим значение переменной order.
  5. Возвращаем 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5