Пространства имён
Варианты
Действия

Filename and line information

Материал из cppreference.com

 
 
Язык С++
Общие темы
Управление программой
Операторы условного выполнения
Операторы повторения
Операторы перехода
Функции
объявление функции
объявление лямбда-функции
шаблон функции
спецификатор inline
спецификаторы исключений (устарело)
спецификатор noexcept (C++11)
Исключения
Пространства имён
объявление пространства имён
псевдонимы пространства имён
Типы
спецификатор decltype (C++11)
Спецификаторы
cv-спецификаторы
спецификаторы продолжительности хранения
спецификатор constexpr (C++11)
спецификатор auto (C++11)
спецификатор alignas (C++11)
Инициализация
Литералы
Выражения
Утилиты
Типы
typedef-объявление
объявление псевдонима типа (C++11)
атрибуты (C++11)
Приведения типов
неявные преобразования
const_cast-преобразование
static_cast-преобразование
dynamic_cast-преобразование
reinterpret_cast-преобразование
C-подобное и функциональное приведение типов
Выделение памяти
Классы
Особые свойства классовых функций
Специальные функции-члены
Шаблоны
шаблон класса
шаблон функции
специализация шаблона
упакованные параметры (C++11)
Разное
Ассемблерные вставки
 
 
Включает в других исходных файлов в текущем исходном файле на линии сразу после директивы.
Оригинал:
Includes other source file into current source file at the line immediately after the directive .
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править] Синтаксис

#line lineno (1)
#line lineno "filename" (2)

[править] Объяснение

Изменение текущего препроцессора номер строки в lineno. разложения макро __LINE__ за этой точкой будет расширяться lineno плюс количество фактически исходный код линии встречаются так.
Оригинал:
Changes the current preprocessor line number to lineno. Expansions of the macro __LINE__ beyond this point will expand to lineno plus the number of actual source code lines encountered since.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
Также изменяет текущее имя файла препроцессором filename. разложения макро __FILE__ С этой точки будет производить filename.
Оригинал:
Also changes the current preprocessor file name to filename. Expansions of the macro __FILE__ from this point will produce filename.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Любое предварительной обработки маркеров (макро константы или выражения) допускается в качестве аргументов #line тех пор, как они расширяются до целое число, десятичное необязательно после допустимую строку символов.
Оригинал:
Any preprocessing tokens (macro constants or expressions) are permitted as arguments to #line as long as they expand to a valid decimal integer optionally following a valid character string.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Заметки

Эта директива используется некоторые автоматическая генерация кода инструменты, которые производят C + файлы + источник из файла, написанного на другом языке. В этом случае, #line директивы могут быть вставлены в создаваемый C + + файл ссылается номер строки и имя файла оригинала (человек-редактирования) исходных файлов.
Оригинал:
This directive is used by some automatic code generation tools which produce C++ source files from a file written in another language. In that case, #line directives may be inserted in the generated C++ file referencing line numbers and the file name of the original (human-editable) source file.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Пример

#include <cassert>
#define FNAME "test.cc"
int main()
{
#line 777 FNAME
        assert(2+2 == 5);
}

Вывод:

test: test.cc:777: int main(): Assertion `2+2 == 5' failed.