阎秋落 发表于 2017-1-17 22:38:27

41节,我自己试的时候宏定义实参传入时不能将反斜杠前自动补上反斜杠输出

本帖最后由 阎秋落 于 2017-1-18 15:18 编辑

在视频中有这段代码
#include <stdio.h>

#define STR(s) # s

int main (void)
{
        printf ("%s\n", STR(FISHC));
       
        return 0;
}

小甲鱼老师说实参传入时,多个空格替换成一个空格,双引号自动补一个反斜杠,反斜杠也自动补一个反斜杠,但是我自己试的时候不行。
#include <stdio.h>

#define STR(s) # s

int main (void)
{
        printf ("%s\n", STR(FISH   C \\ "));
       
        return 0;
}

结果是这样的,一个反斜杠什么都不显示,打两个反斜杠输出一个反斜杠,打两个引号时正常输出来了,但是只写一个引号的话报错,不知道为什么

a17632 发表于 2017-1-19 13:12:03

换个编译软件看看

阎秋落 发表于 2017-1-20 11:41:49

a17632 发表于 2017-1-19 13:12
换个编译软件看看

电脑上有VC6,试了一下结果一样

人造人 发表于 2017-1-20 13:31:14

阎秋落 发表于 2017-1-20 11:41
电脑上有VC6,试了一下结果一样

问题解决了吗?

只有 有双引号才加反斜杠


阎秋落 发表于 2017-1-22 16:31:18

人造人 发表于 2017-1-20 13:31
问题解决了吗?

只有 有双引号才加反斜杠

明白了

阎秋落 发表于 2017-1-22 16:36:43

人造人 发表于 2017-1-20 13:31
问题解决了吗?

只有 有双引号才加反斜杠

不过我试了一下,还有一点,str括号里面有双引号的话必须成对出现,否则编译器就会报错

人造人 发表于 2017-1-22 16:51:15

阎秋落 发表于 2017-1-22 16:36
不过我试了一下,还有一点,str括号里面有双引号的话必须成对出现,否则编译器就会报错

页: [1]
查看完整版本: 41节,我自己试的时候宏定义实参传入时不能将反斜杠前自动补上反斜杠输出