Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the meaning of #line in C language?

What's the meaning of #line in the C language? Where would it be used?

like image 394
Yongwei Xing Avatar asked Feb 07 '10 09:02

Yongwei Xing


People also ask

What do you mean by a symbol?

1 : something that stands for something else : emblem The eagle is a symbol of the United States. 2 : a letter, character, or sign used instead of a word to represent a quantity, position, relationship, direction, or something to be done The sign + is the symbol for addition. symbol.

What's meaning of UwU?

Uwu is an emoticon depicting a cute face. It is used to express various warm, happy, or affectionate feelings. A closely related emoticon is owo, which can more specifically show surprise and excitement. There are many variations of uwu and owo, including and OwO, UwU, and OwU, among others.


2 Answers

It is called the preprocessor line control directive.

The expansions of both __FILE__ and __LINE__ are altered if a #line directive is used. It causes the compiler to view the line number of the next source line as the specified number.

Its main use is to make the compiler provide more meaningful error messages.

You can find more explanation and a usage example in IBM's documentation.

like image 24
codaddict Avatar answered Sep 26 '22 03:09

codaddict


It tells the compiler where the following line actually came from. It's usually only the C preprocessor that adds these, for example, when including a file, it tells the compiler (which is basically only seeing one stream of data) that we're looking at a different file.

This may sound strange, but the preprocessor simply inserts the header files where you specify your includes, and the compiler works on the whole thing (all header files concatenated along with your source code), you can check the result of the preprocessor stage if using gcc with gcc -E myfile.c. In there you'll notice it adds a #line directive whenever you include files, and also whenever it reduces the amount of text fed to the compiler (such as large amounts of comments may be reduced to a single #line directive, skipping ahead)

It is also used by other programs, such as bison/yacc to tell you that the problem (if there's a compile problem) is related to your rules-file at a specific line, which the compiler would otherwise be unable to do, as the bison/yacc generates c-files.

like image 121
falstro Avatar answered Sep 22 '22 03:09

falstro