File path is always relative to mission directory. If script dir\a.sqf includes dir\b.sqf, use "dir\b.sqf" and not "b.sqf".
Description
Reads and processes the content of the specified file. Preprocessor is C-like, supports comments using // or /* and - / and PreProcessor Commands.
Due to the hard-drive access this command executes and the lack of caching this command should not be used in time-critical script loops.
Warning
If the file you are loading is not prepared using UTF-8 encoding and contains some characters with codes > 127, they might convert incorrectly.
Syntax
preprocessFile fileName
Parameters:
fileName: String - path to the file and name of the file
Returns: String
Examples
Example 1
_content = preprocessFile "myFunction.sqf";
See also
fileExists · preprocessFileLineNumbers · loadFile · Function · SQF Syntax · call · spawn · execVM · PreProcessor Commands
Community notes
Use preprocessFileLineNumbers instead as it provides more context information on error.
The main difference between preprocessFile and preprocessFileLineNumbers is that the latter adds #line directive to the target file, which allows to log the __LINE__ error happened at and the __FILE__ error happened in.
Essentially what the preprocessFile command does is it refers to the contents of a file as a string:
Example 1:
boop.html:
<t align = 'center' valign = 'middle' shadow = '0' size = '2'>structured text</t>
init.sqf:
_text = parseText preprocessFile "boop.html";
hint _text;
This is especially useful for long strings, and it works on files with any file extension as long as they can be edited with a text editor.
Example 2:
init.sqf:
hint preprocessFile "description.ext";
copyToClipboard preprocessFile "mission.sqm";
The above is all valid. However, using *.jpg or any other files saved in an image format is not possible.