伯谅 LCw

对于 C++ 标准的愚见

在这篇文章中,我会做一个自我介绍,并谈论对于 C++ 的标准的一些愚见。

既然这是我在这里的第一篇技术文章…………其实也不算太技术,好啦,其实是我无聊,呵呵,就来自我介绍一番。

大家好,我是伯谅,本名林俊玮,目前 19 岁,双性恋,是一名不折不扣的单身狗,也是马来西亚柔佛州新山县士古来区南方大学学院工程与资讯学院电脑系软件工程学士第一年的学生 (泥垢了,这么长气==)。

我也是伯谅制作组的创始人和总监,目前伯谅制作组的员工只有一位,没错,只有我。

过去那些好的、坏的,我都不提,来提提现在的,我现在还是一名 Windows Insider,此外,我也为某公司的手机软件做中文翻译和 Beta 测试。顺便一提,这些工作都是没酬劳的。

我现在会说和写的语言有华语、闽南语、英语、马来语、C、C++、Java、JavaScript、HTML 和 PHP。

我也是 DotA 1 和 Dota 2 的玩家,目前动 Dota 2 比较多;使用的社交网络有面簿、推特、Google+、Instagram、新浪微博等等。

好了,进入正题。

首先来说说,我对编程的接触开始于中四 (这个我在 Blogspot 博客有提到),对电脑很有兴趣的我选择转校到技术中学,就读电脑编程。

那时我还不知道编程是什么东西,不过在我了解和学习之后,我对其反而更加有兴趣了。

而在技术中学的这两年,我学习的编程语言都是比较旧的标准,所使用的软件都是老掉牙的版本,教科书也是政府出版的。

就例如,C++ 的 #include <iostream.h>

我在 SPM 毕业之后才知道,原来 #include <iostream.h> 很早之前就过时了,现在已经用 #include <iostream>using namespace std; 取代。

这些变化,对我来说蛮大的。至少我看到的是,C 和 Java 的句法基本上没有什么变动,就 C++ 的变动到很大。

因为以一个编程语言来说,最为重要的是输入和输出,而在 C 和 C++ 中,输入和输出的功能都是定义在头文件中。

C 的是在 stdio.h,而 C++ 的,原本是在 iostream.h,我也不懂从几时开始,改成了 iostream

头文件改掉了,那还不用紧,因为我个人已经习惯旧的 C++ 写法,所以到了现在,因为我现在都是写 C 和 Java 多,所以 C++ 新版的句法我有时会不记得,就是会忘记加入 using namespace std; 这样的语句,结果编译不到…………

旧版的 C++ 源程序范例:

#include <iostream.h>

void main()
{
    cout<<"GFYP.";
}

新版的 C++ 源程序范例:

#include <iostream>

using namespace std;

int main()
{
    cout<<"GFYP.";
    return(0);
}

搞不懂做么要改这样马蛋的句法,真的是…………

P/S: 上面的两个源程序范例,眼尖的人可能还会看到 void main()int main() 这个差别,其实 C 也是这样,要不然程序返回不了错误码,命令处理器很难搞;return(0); 就是返回错误码为 0,代表程序运行顺利,没有发生错误。

而且,C 的头文件带到 C++,原本文件名还是一样的,可是新标准里面,文件名就不一样了。

最平常的,C 的 stdio.h,带到 C++,就成了 cstdio;C 的 math.h,带到 C++,成了 cmath,以此类推,可是不是所有 C 的头文件都是这样,把 .h 后缀名去掉,文件名前面加上一个 c 啦。

我是一直都没有搞明白,所以,语言是人类写的,你觉得是 bug,可是作者觉得是功能…………你没法度。

简单来讲,就是要吐槽 C++ 的新旧版变动就是了:原本简单的东西,偏偏要弄到这样复杂,真踏马的==。

P/S: 这里说的新旧版,老实说,其实也都成了旧版啦,因为 iostreamusing namespace std; 等等的东西都沿用了很多年。

废话讲完,来讲点人话………… Lel.

话说,到现在,C 和 C++ 的标准修订还在持续进行,目前 C 的最新标准是 C11,C++ 的最新标准则是 C++14,未来标准是 C++17。

在这里我也要说一下,作为初学者,请不要直接去读编程语言的标准文档,那可是会死人的,因为看不懂。




🌙