Управление нумерацией строк
Управление нумерацией строк
Синтаксис:
#line <константа> ["имя-файла"]
Директива #line сообщает компилятору языка Си об изменении имени исходного файла и порядка нумерации строк. Это изменение отражается только на диагностических сообщениях компилятора: исходный файл будет теперь именоваться как <имя-файла>, а текущая компилируемая строка получит номер <константа>. После обработки очередной строки счетчик номеров строк увеличивается на единицу. В случае изменения номера строки и имени исходного файла директивой #line компилятор "забывает" их прежние значения и продолжает работу уже с новыми значениями.
Директива #line обычно используется автоматическими генераторами программ для того, чтобы диагностические сообщения относились не к исходному файлу, а к сгенерированной программе.
<Константа> в директиве #line может быть произвольной целой константой. <Имя-файла> может быть произвольной комбинацией символов, заключенной в двойные кавычки. Если имя файла опущено, то имя исходного файла остается прежним.
Текущий номер строки и имя исходного файла доступны в программе через псевдопеременные с именами __LINE__ и __FILE__. Эти псевдопеременные могут быть использованы для выдачи во время выполнения сообщений о точном местоположении ошибки.
Значением псевдопеременной __FILE__ является строка, представляющая имя файла, заключенное в двойные кавычки. Поэтому для печати имени исходного файла не требуется заключать сам идентификатор __FILE__ в двойные кавычки.
Примеры.
/* пример 1 */
#line 151 "copy.с"
/* пример 2 */
#define ASSERT(cond) if (!cond)
{printf ("ошибка в строке %d файла %s ",
__LINE__, __FILE__);} else;
В первом примере устанавливается имя исходного файла сору.с и текущий номер строки 151.
Во втором примере в макроопределении ASSERT используются псевдопеременные __LINE__ и __FILE__ для печати сообщения об ошибке, содержащего координаты исходного файла, если некоторое условие, заданное макроаргументом cond, ложно.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Разрыв строк
Разрыв строк Мы совсем забыли поместить на Web-страницы сведения об авторских правах их разработчика, т. е. о нас. Давайте сделаем это. Поместим их в самый низ Web- страниц посредством изученного в главе 2 тега <ADDRESS>:<ADDRESS>Все права защищены. Читатели, 2010 год.</ADDRESS>Все
Нумерация строк
Нумерация строк При работе с документами определенного типа (например, с юридическими договорами) иногда бывает необходимо нумеровать не только страницы, но и строки. В Microsoft Word есть возможность автоматической нумерации строк. Для этого сделайте следующее.1. Щелкните на
2.9. Форматирование строк
2.9. Форматирование строк В Ruby, как и в языке С, для этой цели предназначен метод sprintf. Он принимает строку и список выражений, а возвращает строку. Набор спецификаторов в форматной строке мало чем отличается от принятого в функции sprintf (или printf) из библиотеки С.name = "Боб"age =28str =
2.20. Повтор строк
2.20. Повтор строк В Ruby оператор (или метод) умножения перегружен так, что в применении к строкам выполняет операцию повторения. Если строку умножить на n, то получится строка, состоящая из n конкатенированных копий исходной:etc = "Etc. "*3 # "Etc. Etc. Etc. "ruler = " + " + (". "*4+"5" + "."*4+" + ")*3#
2.26. Шифрование строк
2.26. Шифрование строк Иногда нежелательно, чтобы строки можно было легко распознать. Например, пароли не следует хранить в открытом виде, какими бы ограничительными ни были права доступа к файлу.В стандартном методе crypt применяется стандартная функция с тем же именем для
4.5. Обращение строк
4.5. Обращение строк ПроблемаТребуется обратить (реверсировать) строку.РешениеЧтобы обратить строку «на месте», не используя временной строки, используйте шаблон функции reverse из заголовочного файла <algorithm>:std::reverse(s.begin(), s.end());Обсуждениеreverse работает очень просто: она
ВВОД СТРОК
ВВОД СТРОК Процесс ввода строки выполняется за два шага: выделение памяти для запоминания строки и применение функции ввода для получения строки.
ВЫВОД СТРОК
ВЫВОД СТРОК Опять мы должны полагаться на библиотечные функции, которые могут немного изменяться от системы к системе. Функции puts( ) и printf( ) - две рабочие лошадки, используемые при выводе строк.
2. Линия строк
2. Линия строк Признаки слева направо (рис. 182): Рис. 182• линия строки прямая;• линия строки поднимающаяся;• линия строки опускающаяся;• линия строки волнообразная;• линия строки выгнутая (аркообразная);• линия строки вогнутая;• линия строки беспорядочная,