pike.git
/
CHANGES
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/CHANGES:139:
o Fixed symbol resolution with deep inherits and mixins. o Added multi-character character constants. 'ILBM' is equivalent to (('I'<<24)|('L'<<16)|('B'<<8)|'M'). Unlike how it works in some C compilers the native byte order is never relevant.
+
o Added new syntax for literal-string constats
-
+
#{, #( and #[ starts a literal string, and it is ended by the
+
corresponding end marker: #}, #) and #] respectively.
+
+
No character is modified at all inside the literal string, including
+
newlines, \ " and '.
+
+
So, the string #["\n\'##] will be equivalent to "\"\\n\\'#".
+
+
The main usecase is to write code in code:
+
+
| string code = #[
+
| void main(int c, array v) {
+
| string x = "";
+
| foreach( v[1..], string elm )
+
| x += reverse(elm)+",";
+
| write("Testing: %s\n", reverse( x ));
+
| #];
+
+
The three different start/end markers might be useful if you write
+
code in code in code, since there is no way to quote the start/end
+
markers.
+
New preprocessor features ------------------------- o Support for the ", ##__VA_ARGS__" cpp feature. This makes the ‘##’ token paste operator have a special meaning when placed between a comma and a variable argument. If you write | #define err(format, ...) f(debug)werror("ERROR: "+format, ##__VA_ARGS__)