Spec-Zone.ru › GCC 11 CPP

Предыдущий: Предварительный просмотр аргументов, Вверх: Недостатки макросов [Содержание][Индекс]

3.10.7 Переводы строк в аргументах ¶

Вызов макроса, подобного функции, может занимать несколько логических строк. Однако в текущей реализации вся расширенная запись выводится на одной строке. Таким образом, номера строк, выводимые компилятором или отладчиком, относятся к строке, в которой начался вызов, что может отличаться от строки, содержащей аргумент, вызвавший проблему.

Вот пример, иллюстрирующий это:

#define ignore_second_arg(a,b,c) a; c

ignore_second_arg (foo (),
                   ignored (),
                   syntax error);

Синтаксическая ошибка, вызванная токенами syntax error приводит к сообщению об ошибке, ссылающемуся на третью строку — строку ignore_second_arg — хотя проблемный код находится в пятой строке.

Мы считаем это ошибкой и намерены исправить её в ближайшем будущем.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.4.0/cpp/Newlines-in-Arguments.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API