c/c++语言开发共享你能帮我一个可以打印的简短代码吗?

#define q(k)main(){return!puts(#k"nq("#k")");} q(#define q(k)main(){return!puts(#k"nq("#k")");}) 

这段代码可以在屏幕上打印出来,但是我很难阅读它,特别是那两个#K,它是如何工作的?我知道#define q(k)2 * k是如何工作的,但我真的不知道关于这段代码。请帮我分析一下!谢谢!

    简化调用并使用编译器的预处理器来查看正在发生的事情:

     #define q(k)main(){puts(#k"hello("#k")");} q(argument) 

    在上面运行gcc -E可以:

     main(){puts("argument""hello(""argument"")");} 

    正如您所看到的,发生的事情是q宏的参数被转换为字符串(因为它被用作#k – 这有时被称为“字符串化”)。 这里没有其他魔法。

      以上就是c/c++开发分享你能帮我一个可以打印的简短代码吗?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560338.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐