CTL は基本的に C / C++ 言語のサブセットになっているようです。当然ながら C 言語で使える仕様がすべて使えるわけではなく、かなり限定されたものになっています。既に文字型変数は使えないという指摘はしておきましたが、詳しい説明は以下の説明書にあります。
https://ampasctl.sourceforge.net/CtlManual.pdf
この中で、いくつかの要点に関して、かいつまんで、紹介します。
まず使える区切り記号や演算子記号ですが
[ ] ( ) { } . * + - ~ ! / % << >> < > <= >= ==
!= ^ & | && || ; = ,
はサポートしています。しかし以下はサポートしていません。
-> ++ -- ? : ... *= /= %= += -= &= ^= |= <<= >>=
# ## <: :> <% %> %: %: %:
従って、以下のような、条件演算⼦(ternary operator)を使用することはできません。
distance.x = ach == 0.0f ? 0.0f : (ach - rgb.x) / _fabs(ach);
また、定数の型を指定する接尾詞 (リテラル) に関しては、
1.2e2 や 1.2h (ハーフリテラル)
はサポートしていますが、f, F, L はサポートしていません。例えば以下のような表現は許容されません。
0.0f 1.2L
C, C++ で使える組み込み関数の内、CTL 内でサポートされているものは、以下のものだけです。それ以外はサポートされません。
acos, asin, atan, atan2, cos, sin, tan, cosh, sinh, tanh, exp, exp_h, log, logh, log10, log10_h, pow, pow_h, pow10, pow10_h, sqrt, fabs, floor, fmod, hypot
かなり限定されていますが、その分、私のように、C言語になれていない人でもとっつきやすい側面もあるかと思います。