2014ǯ08��27��
C/C++�ץ�ץ����å��ε�ư�ΰ㤤��/ ## /�ԡ�
����C/C++�ץ�ץ����å��ε�ư�ΰ㤤��defined�ԡ�
��������Facebook�Ҥ�C/C++�ץ�ץ����å�Warp��Windows�Ķ��ǥӥ��
Warp �ε�ư��Ĵ�٤Ƥ��ơ��ʲ��Τ褦�ʡ��ޥ���Ÿ����˥����Ȥ����������褦�ʥ����ɤ��̤�ʤ����˵����դ��ޤ�����
(���� MinGW GCC �� x86_64-gdcproject-mingw32/x86_64-gdcproject-mingw32/sysroot/mingw/include/wtypes.h �إå�)
$ cat gen_cpp_comment.c #define _VARIANT_BOOL /##/ $ ./warp.exe --stdout gen_cpp_comment.c # 1 "gen_cpp_comment.c" # 1 "i:\test\warp//" # 1 "<command-line>" # 1 "gen_cpp_comment.c" gen_cpp_comment.c(2) : ## cannot appear at end of macro text
�� skipWhitespace() �Ȥ����ƥ�ץ졼�ȴؿ�����ǡ�'*' �� '/' �� 1 ʸ���ξ��˼�ꤳ�ܤ��Ƥ��ޤäƤ���褦�Ǥ����ʤ��Τ��ᡢ�Ǹ�� '/' �������åפ���֥ޥ���ʸ����κǸ�� ## �ϻ��ѤǤ��ʤ��פȥ��顼�ˤʤäƤ��ޤ����ˤɤ���� Warp �� D ����� InputRange �Ȥ������Ū�ʹ�¤�Υƥ�ץ졼�Ȥ����Τ����Ҥ���Ƥ���Τǡ����ϥ��ȥ꡼��� 1 ʸ�����ɤߤ������InputRange �˲�ǽ������ empty/front/popFront() �Τߡˤʤ��ᡢ�ȥ�å����ʥ����ɤˤʤäƤ���Τ�����Х��θ����˻פ��ޤ���
GCC 4.9.0 �Ǥϡ�������Τ��̤�ޤ����ʤ��Τ��� wtype.h �إå�������̵�����ѤǤ���ˡ��ºݤ˼��̻Ҥ���Ѥ���ȥ��顼�ˤʤ�ޤ���
$ cat gen_cpp_comment.c #define _VARIANT_BOOL /##/ _VARIANT_BOOL $ gcc -E gen_cpp_comment.c # 1 "gen_cpp_comment.c" # 1 "VC++ �Ǥ��̤�ޤ���" # 1 " " # 1 "gen_cpp_comment.c" gen_cpp_comment.c:1:23: error: pasting "/" and "/" does not give a valid preprocessing token #define _VARIANT_BOOL /##/ ^ gen_cpp_comment.c:3:1: note: in expansion of macro '_VARIANT_BOOL' _VARIANT_BOOL ^ / /
>cl /E gen_cpp_comment.c Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. gen_cpp_comment.c #line 1 "gen_cpp_comment.c"������ˤ����򤱤�٤����������ʤΤǤ��������Τ褦�ʥ����Ȥ������� valid �ʤΤ��ɤ����ϡ�����ä����ΤˤϤ狼��ޤ���Ǥ�����
N1256��C99 final draft�ˤ� 6.4.9 Comments �ˤϡ�����Ϥ���äȤ狼��ʤ��ä��ΤǤ�����
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
#define glue(x,y) x##y�Ȥ����ᤤ�㤬���ꡢ�ޤ���6.10.3.3 The ## operator ��
glue(/,/) k(); // syntax error, not comment
If the result is not a valid preprocessing token, the behavior is undefined.�Ȥ���ޤ�����// ���ץ�ץ����å��Υȡ�����Ȥ��� valid �ʤΤ��ɤ������褯�狼��ޤ���Ǥ�����
�⤷�ܤ������������ޤ����顢����������������й����Ǥ���
��Ϣ�������� URL: stackoverflow: Does the C preprocessor strip comments or expand macros first?