如何开始学习MinGW C ++?

时间:2011-12-03 15:22:00

标签: c++ mingw codeblocks

我正在学习带有代码块的C ++,我想问一下你是否可以给我一些好的指示,告诉我如何学习MinGW和Visual Studio C ++之间的区别,例如\n和{{1}并不总是像我期待的那样表现。我是完全新手,只有在Jesse Liberty的一本旧书“21天内自学C ++”的第2天到达,程序看起来像这样:

<<

MinGW C ++和GNU C ++一样吗?有官方标准吗?任何有关新手学习/教学的建议都会得到满足。我正在关注的那本书是“21天内自学C ++”这本书的旧版本,但我可以修改第一个练习中的程序,我相信我可以使用这本书,因为可能没有太多变化。自发布之后就已经发布了基础C ++(我拥有的这本书的版本可能已经有10年了。)

谢谢!

更新 在获得推荐后,我已经购买了这本书C++ Primer

4 个答案:

答案 0 :(得分:3)

编译器必须强制执行(或者应该强制执行:P)是用标准编写的东西。标准定义了行为,而不是实现,因此编译器可以有所不同。

首先,code :: blocks不是编译器,它是人们通常使用MinGW编译器的环境。另一方面,Visual Studio是一个恰好与它自己的编译器一起提供的环境。

编译器之间的差异应该不关心你作为一个开始的c ++程序员和文本编辑器或开发人员。您想要使用的环境取决于您,您可以在PSpad中编程(编写代码),然后您可以使用百万个不同的编译器进行编译。

总而言之,编制者必须(或应该)遵守的标准。编译器以他们喜欢的任何方式实现它,并且他们可能会添加一些额外的东西(比如可变大小的数组静态分配。)请注意,标准对这些扩展一无所知,因此不会定义它们的行为。

然后有一个文本编辑器,你可以编写代码并用你想要的任何编译器编译它。

除非您之前有使用较低级别(仍然是高级别:)编程语言的经验,否则C ++不是一种易学的语言。如果您还没有遇到指针和引用,那么会有很多事情发生。

我建议你得到一本新书甚至可能包含几个月前正式发布的c ++ 0x / c ++ 11标准的信息。

另外,不要在c ++中使用(double)x这种类型转换,因为它实际上是一种转换类型的c方式。在此方案中使用static_cast < double > (x)。 (还有其他方法可以施放。)

答案 1 :(得分:2)

只是评论“MinGW和Visual Studio C ++之间的区别”:

MinGW和Visual C ++都附带标准C / C ++库和Windows API库。除了这些之外,MinGW包还包含许多POSIX C / C ++库,例如dirent.h或pthread.h,这对于在Windows上编写跨平台控制台程序很有用(我在开发模拟程序时这样做了) Windows,在SEE-GRID上运行。

答案 2 :(得分:0)

  

cout&lt;&lt; “你好。”; endln;

你有错误(我假设)a;在中间线。

&lt;&lt;运算符应该按照C ++标准的定义工作。它不适用于mingw和visual studio或任何其他编译器之间的讨论。

然而,\ n对Windows和Linux环境有影响。在Linux中,每一行都以\ n字符结束。在Windows中,它以LF(换行)和CR(回车)结束。即,\ r \ n。这就是为什么linux文本文件在Windows上显示时看起来会有很大差异,反之亦然。

在任何情况下,差异都与编译器无关,而是与不同操作系统上的line-end characters无关。

答案 3 :(得分:0)

MinGW C ++与GNU C ++相同吗?

是的,MinGW基本上是用于Windows的GNU工具的分发版(MinGW = Windows的极简GNU)。它包含一个GNU C ++编译器,用于其他编程语言的编译器,它们是GCC的一部分。

是否有官方标准?

C ++作为一种语言有一个标准。但是,C ++实现没有“标准”。当然,实现应尽可能接近C ++标准。 C ++标准的某些部分声明某些内容是“特定于实现的” - 然后由实现决定如何处理该特定情况。

您提到的关于“\ n”(换行符)的问题纯粹是特定于平台的。如果您只使用std::cout,那么“\ n”将起作用,但如果您使用print()或printf()或其他方法写入STDOUT,那么您需要小心操作。我从你的帖子中看到你使用Windows,其中新行是“\ r \ n”(回车+换行)。在大多数POSIX平台上,“\ n”是“行尾”字符,在Windows上它是“\ r \ n”。在MacOS X上它是“\ r”,现在是“\ n”。