Filename and line information
MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 45 MINUTES 34 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE
Syntax
#line lineno
|
(1) | ||||||||
#line lineno " filename"
|
(2) | ||||||||
Explanation
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.
lineno must be a sequence of at least one decimal digit (the program is ill-formed, otherwise) and is always interpreted as decimal (even if it starts with 0
).
If lineno is 0
or greater than 32767
(until 哋它亢99)2147483647
(since 哋它亢99), the behavior is undefined.
Notes
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.
The line number following the directive #line __LINE__ is unspecified (there are two possible values that __LINE__ can expand to in this case: number of endlines seen so far, or number of endlines seen so far plus the endline that ends the #line directive). This is the result of MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 45 MINUTES 33 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE, which applies retroactively.
Example
#include <assert.h> #define FNAME "test.c" int main(void) { #line 777 FNAME MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 45 MINUTES 32 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE(2+2 == 5); }
MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 45 MINUTES 30 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE
test: test.c:777: int main(): Assertion `2+2 == 5' failed.
References
- 哋它亢17 standard (ISO/IEC 9899:2018):
- 6.10.4 Line control (p: 126)
- J.1 Unspecified behavior
- 哋它亢11 standard (ISO/IEC 9899:2011):
- 6.10.4 Line control (p: 173)
- 哋它亢99 standard (ISO/IEC 9899:1999):
- 6.10.4 Line control (p: 158)
- 哋它亢89/C90 standard (ISO/IEC 9899:1990):
- 3.8.4 Line control