====== BCC ====== * **[[https://github.com/wormt/bcc|GitHub]]** * **[[https://github.com/wormt/bcc/wiki|Documentation]]** * **[[https://forum.zdoom.org/viewtopic.php?f=44&t=54037|ZDoom forum thread]]** BCC is an alternative ACS compiler. If you are taking full advantage of BCS, it is recommended to use [[BCSUtils]] -- a version of ACSUtils with full support for BCS [[strict typing]]. If you are using BCC to compile regular ACS, ACSUtils is still fully supported in BCC, but will cause type errors if you enable [[strict typing]]. To avoid strict typing errors, you need to use [[BCSUtils]]. ===== Caveats ===== ==== Functions return 0 by default (not a bug) ==== function int f() {} // returns 0 If a function that returns a value reaches the end, and there is no "return" statement at the end, the function returns 0. This is done to avoid false compiler errors like this: function int f(void) { if (x) return 1; else return 2; // ACC will complain that the function doesn't return a value } ===== Fixed bugs ===== ==== Named clientside scripts are not clientside [fixed in 0.8.0] ==== BCC fails to mark named clientside scripts as clientside, so they end up actually being serverside. Instead, it marks an unnamed, not necessarily existing script as clientside. Details: https://zandronum.com/tracker/view.php?id=3153