线路控制指令:无论何时编译程序,程序中都有可能发生某些错误。每当编译器在程序中发现错误时,它都会向我们提供在其中找到错误的文件名以及行列表以及错误所在的确切行号。这使我们很容易找到并纠正错误。但是,可以使用#line指令控制编译器在编译过程中应提供的信息。它操纵编译器读取一行,以便程序员可以控制该行以及文件编译器读取的行。它基本上用于重置行号。
特点:
- 实际上对AC / C++源代码进行了预处理,以创建一个转换单元,然后将其编译。
- 转换单元具有头文件及其本身的所有内容。因此,对于编译器而言,很难区分文件和正在读取的行,然后它将相应地生成错误消息。
- 对于预处理器,它每次都会添加行控制,并将头文件插入源代码。
语法:
Syntax 1
# line-number “file-name”
Syntax 2
# line line-number “file-name”
line-number — Line number that will be assigned to the next code line. The line numbers of successive lines will be increased one by one from this point on.
“file-name” — Optional parameter that allows to redefine the file name that will be shown.
解释:
- 上面两种语法都相同,只是略有不同。
- 语法1将由编译器读取,而语法2将由预处理器读取。
- 最终,语法2将以翻译单位转换为语法1。
- 这些语法最终告诉编译器,下一行将具有“ line-number”作为行号,并且属于文件“ file-name” 。
- 要验证这一点,请使用两个内置宏:
- __LINE__:它在源代码中打印行号。
- __FILE__:打印源代码的文件名。
下面是演示线路控制的程序:
C++
// C++ program to demonstrate line control
#include
using namespace std;
// Driver Code
int main()
{
cout << "START" << endl;
cout << __LINE__ << " "
<< __FILE__ << endl;
#line 67 "Binod.cpp"
cout << __LINE__
<< " " << __FILE__
<< endl; // (67)
// This will apply continously (68)
cout << __LINE__ << endl; // (69)
}
START
11 /usr/share/IDE_PROGRAMS/C++/other/1d6323581eea236f68331bcde745f2c6/1d6323581eea236f68331bcde745f2c6.cpp
68 Binod.cpp
73