Поделиться через


#line (Справочник по C#)

#line позволяет изменить номер строки компилятора и (необязательно) вывод имени файла для ошибок и предупреждений. В этом примере показано как сообщить о двух предупреждениям, связанных с номерами строк. Директива #line 200 принудительно задает для номера строки значение 200 (хотя по умолчанию это строка № 7), до появления следующей директивы #line имя файла во всех сообщениях будет указываться как "Special". Директива #line восстанавливает нумерацию строк по умолчанию, в которой учитываются строки, перенумерованные предыдущей директивой.

class MainClass
{
    static void Main()
    {
#line 200 "Special"
        int i;    // CS0168 on line 200
        int j;    // CS0168 on line 201
#line default
        char c;   // CS0168 on line 9
        float f;  // CS0168 on line 10
#line hidden // numbering not affected
        string s; 
        double d; // CS0168 on line 13
    }
}

Заметки

Директиву #line можно использовать в автоматизированном, промежуточном шаге в процессе построения. Например, если строки были удалены из первого файла с исходным кодом, но компилятор по-прежнему должен выдавать результат на основе исходной нумерации строк в файле, строки можно удалить и затем смоделировать исходную нумерацию строк с помощью #line.

Директива #line hidden скрывает последовательные строки от отладчика так, что когда разработчик переходит по коду, любые строки между #line hidden и следующей директивой #line (если, конечно, это не другая директива #line hidden) будут пропущены. Эту возможность можно также использовать для того, чтобы ASP.NET различал пользовательский и созданный компьютером код. Несмотря на то, что в основном эта возможность используется ASP.NET, существует вероятность, что она будет использоваться большим числом генераторов источника.

Директива #line hidden не влияет на имена файлов или номера строк при создании сообщений об ошибках. То есть, в случае ошибки в скрытом блоке компилятор сообщить имя текущего файла и номер строки с ошибкой.

Директива #line filename определяет имя файла, которое должно присутствовать в результатах компилятора. По умолчанию используется фактическое имя файла с исходным кодом. Имя файла необходимо заключить в двойные кавычки (""), и ему должен предшествовать номер строки.

В файле исходного кода может присутствовать любое число директив #line.

Пример 1

Следующий пример демонстрирует как отладчик пропускает скрытые строки в коде. При выполнении примера выводятся три строки текста. Однако, если задать точку остановка (как показано в примере) и нажать клавишу F10 для перехода по коду, то можно будет заметить, что отладчик пропускает скрытую строку. Кроме того, обратите внимание, что даже если в скрытой строке установить точку останова, она все равно будет пропущена отладчиком.

// preprocessor_linehidden.cs
using System;
class MainClass 
{
    static void Main() 
    {
        Console.WriteLine("Normal line #1."); // Set break point here.
#line hidden
        Console.WriteLine("Hidden line.");
#line default
        Console.WriteLine("Normal line #2.");
    }
}

См. также

Ссылки

Директивы препроцессора C#

Основные понятия

Руководство по программированию на C#

Другие ресурсы

Справочник по C#