首页 > 编程知识 正文

c语言中标识符(c语言中%o什么意思)

时间:2023-05-06 16:19:34 阅读:91566 作者:80

文章很有趣,分享给大家。 我相信即使你是CJD高清也会犯这样的错误。 让我们来看看作者犯下的这个bug。

首先,作者想用程序制作文件。 如果有文件名,就创建真正的文件,如果没有,就调用tmpfile (? 制作临时文件。 他的这个程序是HTTP下载的c程序。 code==200是HTTP的返回代码。 (学习c/c成为程序员通讯组) 571545210组的文件中有大量的学习资料和游戏开发教程视频-源代码) )。

else if (代码==200 )//下载wholefile/*写入新文件(plusallowreadingoncewefinish ) */g=名称? 开放(名称,' w ' ) : tmpfile ); }

但是,该程序只在Unix/Linux上运行。 微软的? tmpfile ()的实现? 对于没有管理员权限的人来说,选择C:作为临时文件的保存目录是个大问题。 在Windows 7上,即使有管理员权限也有问题。 因此,上述程序在Windows平台上需要用不同的方法处理,不能直接使用Windows的tmpfile ()函数。

因此,作者首先记下这个问题,在评论中写下了FIXME :

else if (代码==200 )//下载wholefile/*写入新文件(安装新文件//) ) ) ) ) ) 微软' sversionoftmpfile (创建文件:g=名称? 开放(名称,' w ' ) : tmpfile ); }

而且,我认为作者有必要写一个跨平台的编译:

文件*文件(语音) ) { # ifndef _ win32返回文件}; # #适用于windows的电子邮件//代码; #endif }

而且,作者认为这样实现不好,会发现名字冲突。 因为这个函数太难看了。 于是他重构了他的代码——,写了自己实现的tmpfile(-w32_tmpfile ),然后在Windows下使用宏定义把这个函数重命名为tmpfile )。 (csdqz注:这种用法是比较标准的跨平台代码的写法)

# # ifdef _ win32 # definetmpfilew 32 _ tmpfile # endif文件* W32 _ tmpfile {/code为windows的代码; }

搞定! 编译并运行程序。 靠上! 的w32_tmpfile (竟然没有调用,是什么问题? 调试,一步跟踪,果然没有呼叫! 问号式有问题吗? 改为ifelse语句,好的!

if (空值!==名称(g=开放)名称,' w ' ); (else ) g=tmpfile ); }

问号式不可能有问题吧。 我们的宏不会直接作用于问号式吗? 这是编译器的预编译错误吗? 作者怀疑了。

现在,让我们将所有代码连接起来,然后进行比较:

正常工作的代码

可以工作的代码

# # ifdef _ win32 # definetmpfilew 32 _ tmpfile # endif文件* W32 _ tmpfile (语音) {代码为windows; else if (代码==200 ) (/下载wholefile/*写入新文件(可插拔组合文件//) ) fix me wination 32纳米开放(名称,' w ' ) : tmpfile ); if (空值!==名称(g=开放)名称,' w ' ); (else ) g=tmpfile ); }

无法正常工作的代码

不能工作的代码

# # ifdef _ win32 # definetmpfilew 32 _ tmpfile # endif文件* W32 _ tmpfile (语音) {代码为windows; else if (代码==200 ) (/下载wholefile/*写入新文件(可插拔组合文件//) ) fix me wination 32纳米开放(名称,' w ' ) : tmpfile ); }

可能从一开始就看到了这个bug,但是没有作者。 所有问题都在评论中:

/* *写新文件//固定me win32国家航空//微软'服务器通信

看到最后的C:了吗? 在c中,“”表示这一行还没有结束,后面的代码也是注释。 这就是这个bug的真正原因!

(学习c/c成为程序员通讯组) 571545210组的文件中有大量的学习资料和游戏开发教程视频-源代码) )。

if-else开始工作的原因是作者对旧的问号式代码进行了评论。 因此,其功能的代码如下所示。

/* *写新文件//固定me win32 Native version Failshere BEC AUSEM icrosoft ' Sversion ONOS '软件开发人员if (空值!==名称(g=开放)名称,' w ' ); (else ) g=tmpfile ); }

如果作者发现了这个问题的原因,我想一定会骂“妈的”。 我也相信这个bug花了作者很多时间!

最后,我也share了以前犯的错误。

我有一个小函数,需要传递int* pInt的类型。 而且,必须用我的代码将这个int* pInt除数。 的代码如下:

浮点结果=数字/*点; …. /* some comments */num

因为我当时用vi写代码,所以没有语法mldxlb,我的程序都被编译了,但是发生了奇怪的事情。 虽然我也不知道,但是用gdb进行调整的时候,发现有几个词就这样过去了。 这个问题花了我很多时间,最后发现问题原来是没有空间造成的。 TNND,下面用代码mldxlb的插件显示上面的代码。

浮点结果=数字/*点;/*声明* /编号;

我的代码是

浮点结果=数字- X10? f (结果) : f (-结果;

(学习c/c成为程序员通讯组) 571545210组的文件中有大量的学习资料和游戏开发教程视频-源代码) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。