----- Original Message -----
From: "Xiao Yafeng" <xyf.x...@gmail.com>
To: "inline" <inline@perl.org>; "Sisyphus" <sisyph...@optusnet.com.au>
Sent: Friday, July 13, 2012 11:00 PM
Subject: \n cause error.
Hi all,
I've found a bug(maybe) in Inline C while dig wchar_t. see
http://www.perlmonks.org/?node_id=981427
I made a small inline c snippet as rob's suggestion, but throw an error:
....
l\lib\CORE" test_list_pl_f553.c
test_list_pl_f553.xs: In function `GetProcessList':
test_list_pl_f553.xs:29: error: missing terminating " character
test_list_pl_f553.xs:30: error: missing terminating " character
test_list_pl_f553.xs:35: error: syntax error before '}' token
dmake.exe: Error code 129, while making 'test_list_pl_f553.o'
I've found this error is because inline can't treat \n in printf statement
correctly, In xs file,
printf("blah blah blah %s \n", sz) will be translated into
printf("blah blah blah %s
", sz) #two lines!!
a bug?
Funnily enough, I struck the same thing when playing around with another
Inline::C script today.
It happens when you use double quotes instead of single quotes with the
heredoc operator. (Is "heredoc operator" the right term ?)
Instead of :
use Inline C => <<"EOC"
you want:
use Inline C => <<'EOC'
The behaviour you observed seems to be standard perl behaviour, so I don't
think it's a bug:
############################
C:\_32\pscrpt>type try.pl
use warnings;
print <<"EOC";
p"\n"
EOC
print <<'EOC';
p"\n"
EOC
C:\_32\pscrpt>perl try.pl
p"
"
p"\n"
C:\_32\pscrpt>
############################
Cheers,
Rob