From Bohemia Interactive Community
Click on the images for descriptions
- Armed Assault
- Returns the preprocessed content of the given file. The preprocessor is C-like, it supports comments using // or /* and */ and macros defined with #define. The return is file content starting with #line 1 "aFilename"
This is how mysterious #line keyword works:
The keyword can be used in any script, even the one made on-the-fly and executed in debug console for example. The format is:
#line <number> "<name>"
followed by new line. <number> could be any positive integer and <name> could be any name. This will be used only if an error occurs in the script. The error will contain the line: File <filename>, line <linenumber>
where <filename> will be the <name> you set and <linenumber> will be <number> + how many lines it is from the #line line. If the error happened on the line right under #line it will add 0 to <number>, if on second line, it will add 1 etc.
It is possible to use more than one #line keywords, but it seems having just one at the top of the script is enough to pinpoint position of the error easily.
- preprocessFileLineNumbers fileName
- fileName: String - path to the file
- Return Value:
- String - file content containing #line 1 "aFilename"
- Example 1:
_string = preprocessFileLineNumbers "A3\ui_f\scripts\IGUI\RscUnitInfo.sqf"Result is:
#line 1 "A3\ui_f\scripts\IGUI\RscUnitInfo.sqf"
- See also:
- preprocessFileloadFileFunctionSQF syntaxcallspawnexecVMPreProcessor Commands
- Posted on December 17, 2013
- The main difference between preprocessFile and preprocessFileLineNumbers is that the latter adds #line keyword to the target file, which allows to log the __LINE__ error happened at and the __FILE__ error happened in.