#ifndef __GNUC__ задуши меня

Sep 04 2020

Этот вопрос может быть совершенно странным, в настоящее время я работаю над старым кодом (не от меня). На самом деле я не программист на C, но я пытаюсь понять, что на самом деле должна делать эта часть кода. К счастью, странная часть не слишком длинная (часть конфигурации):

int
main ()
{
#ifndef __GNUC__
       choke me
#endif

  ;
  return 0;
}

Если это не компилятор GNU, тогда "choke me"... что это choke meдолжно означать ... Я действительно не понимаю. (и обнаружил только странные вещи, пока гуглил меня душит -.-)

Ответы

3 NateEldredge Sep 04 2020 at 09:36

Это просто должно быть что-то, что недопустимо для C и вызовет синтаксическую ошибку, препятствуя компиляции файла.

Предположительно, программист не предполагал, что код будет работать с каким-либо компилятором, кроме GNU C (gcc), поэтому это приведет к сбою сборки, если используется какой-либо другой компилятор. Выбранные слова не имеют особого значения, за исключением того, что «удуши меня», вероятно, имелось в виду в смысле «это то, что компилятор не может« проглотить », и это его убьет».

Более современный подход будет использовать #error.

2 Someprogrammerdude Sep 04 2020 at 09:36

Это недействительный оператор, поэтому это приведет к ошибке.