黄一文

黄一文的博客

他的个人主页  他的博客

请教各位一个基本的C语言问题, 呵呵。

黄一文  2009年08月03日 星期一 17:12 | 1700次浏览 | 6条评论

//gcc -Ddbg=\"hello_abc\" dpara_test.c                                                                        

#include <stdio.h>
int main(void)
{

  printf("-D is  "dbg" \n");

  return 0;

}

---------
就想问:
  printf("-D is  "dbg" \n");

双引号里面的双引号会被替换? 是标准C里面的吗?一直没见过这样的写法,今天看到了。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
邓楠

回复 邓楠  2009年08月03日 星期一 17:57

宏只是会替换它负责的内容. C里面的字符串支持这样的形式: "new ""string". 你看下面的内容就明白了:

$ cat 0.c
#include <stdio.h>

int main()
{
printf("This ""kind ""of ""use ""of ""string ""could ""work!\n");
return 0;
}
$ gcc 0.c
$ ./a.out
This kind of use of string could work!
$

0条回复

曾睿

回复 曾睿  2009年08月03日 星期一 17:37

man gcc

-D 选项是define的意思,

所以没啥问

4条回复

  • 黄一文

    回复 黄一文  2009年08月03日 星期一 17:40

    双引号里面的双引号会被替换? 我想问的是这个问题,呵呵。

    3条回复

      • 曾睿

        回复 曾睿  2009年08月03日 星期一 17:42

        哦 呵呵 gcc -E -Ddbg=\"hello_abc\" dpara_test.c
        就可以看到结果

        我看了下应该是printf("-D is ""hello_abc""\n");这条的。

        2条回复

          • 郝培强

            回复 郝培强  2009年08月03日 星期一 18:21

            对,这里不是双引号里面出现双引号,呵呵,加几个空格你就好理解

            printf("-D is " dbg " \n");
            printf("-D is " "hello_abc" "\n");

            这样看能理解么?

            1条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号