由”喵”代码想到的

 

#

网上看到这样一段代码

miao.jpg

还是挺无聊的,于是想到一个问题,宏替换的时候假如有多个匹配,应该匹配哪一个的问题,于是实验如下:

#include 

#define aaa "3a"
#define a "1a"
#define aa "2a"

int main(int argc, const char *argv[])
{
    printf("%s
",aaa);
}

这里最终输入结果是3a,也符合我们的思维方式,最长匹配嘛,值得一提的是这种情况

printf("%s
",aa a);

替换结果是”2a” “a”,通过空格间隔。C Primer中提到过这种书写方式,这也是字符串跨行的一种有效的写法,但是毕竟很少在实际情况中看到。 另外一种字符串跨行的方式是:

    char chstr2[] = "abcabc\
abcabc";

这里需要注意,第二行前面不能有空格或者tab。