The zk prep feature requires the pro version of zk. The purpose of zk prep is to preprocess your source code before compiling it with you compiler. There are two situations where you would want to do this. You need to use zk prep when you are using your code to build a new version of zk.exe, as explained in link.txt. Or, if you want to use the c++ extensions of zk in your compiled code, you can use zk prep for that. To use zk prep, use prep.bat, giving it two arguments. The name of your source code file is the first argument and the name of the file where the resulting preprocessed code should go is the 2nd argument. Both arguments must have the filename extension, and if you want either to be in other than the current directory, the directory has to be part of the argument. Keep in mind that you can't use name.cpp as the same name for both. If your original source code uses zk extensions, you might want to name it name.zk, to indicate that, and name the output file name.cpp, to indicate that the result is c++ without extensions. After the two filename arguments discussed above, there is a 3rd, optional argument to prep.bat, which you can normally omit. You can use it when you aren't building a new version of zk.exe, but just using zk extensions in your own compiled code. Use the word "nonames" as the third argument. It tells prep you aren't compiling for a new version of zk.exe, so it can omit the extra names it puts in the output which allow zk to call your compiled functions from your interpreted code. This will prevent prep from increasing the size of your code, but will also prevent your interpreted code from being able to call your compiled code. See link.txt and linkex.bat for more details on building a new version of zk.exe to call your compiled code from your interpreted code. Or see extend.txt for more details on the c++ extensions of zk.