首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了命令行和学习之外,C对任何项目都有好处吗?

除了命令行和学习之外,C对任何项目都有好处吗?
EN

Stack Overflow用户
提问于 2009-11-11 02:07:45
回答 12查看 7.1K关注 0票数 14

这并不意味着是煽动性的或类似的东西,但我正在学习C,(认为)我对大多数基本知识都有很好的掌握。我做过各种各样的书籍练习:素数生成器,Fibonacci生成器,字符串操作,yadda yadda,但是这些都不是很酷。

什么是命令行程序和某物之间的“桥梁”?我听说过用C写的各种游戏,但是怎么写的呢?

原谅我的愤怒,但感觉好像我已经学到了很多东西,但仍然只能做一些相对较少的事情。感谢您对如何处理C.

相关信息: OS豹、PHP和web开发经验(这太棒了,因为项目马上就在您认识到它们如何强大的环境中)

EN

回答 12

Stack Overflow用户

发布于 2009-11-11 02:36:10

摘要

好的,这篇文章变得很大,所以在阅读之前,这里有一个简短的总结:要编写GUI,有许多好的C/C++库(例如,QT)。至少在Windows系统上,大多数人所做的是在需要GUI时使用.NET语言(如C#),在需要更多控制/速度时使用C/C++。两者结合使用也很常见,即在C#中制作图形用户界面,在C中使用速度关键部件。

我仍然鼓励你阅读更长的答案,它包含了更多关于你选择的信息。

更长的答案

我将从一个大问题开始,然后(尽我所能)回答您关于创建GUI的具体问题。我认为C用于教授编程的事实让您感到痛苦,而且仅仅使用命令行程序(毕竟,它们编写起来要简单得多)要容易得多。这并不意味着C不能完成您想要的所有东西,特别是GUI。确实如此。我不认为有任何类型的软件是没有用C语言完成的,通常是在用其他语言之前。

好吧,一些答案:

是C有用的吗?

C及其非常接近的C++负责在世界代码中巨大的部分。我不知道用C语言编写的代码是否比任何其他语言都多,但我猜它已经不远了。

您使用的大多数真正重要的程序实际上都是用C/C++编写的。举个例子,Windows。

今天C在哪里使用?

C/C++仍然使用批量。它们对于开发低级别的东西特别有用(比如操作系统,它需要很大的速度,有很强的控制代码功能的能力,等等)。

但不要认为这对C程序员来说都是低水平的。即使在今天,有了许多其他可用的语言(这些语言可以说更好,当然也更容易编程),C仍然被用来创建几乎所有的东西。您专门问到的GUI应用程序通常是用C编写的,尽管现在很多人都转向了其他语言。注意,我说的转换:C曾经是写作的标准语言,嗯,所有的东西,真的。

如何用C开发GUI

好的,您特别想知道如何用C创建GUI (我希望C++也可以)。

首先,这取决于以下几个因素:

  1. 你写的是什么操作系统?(Windows、Mac和Linux是最常见的)。
  2. 您想让GUI也在其他系统上工作吗?

最常见的情况是编写在Windows上工作的软件。在这种情况下,“自然”解决方案是编写与Win32 API一起工作的东西。这基本上就是Windows的“附带”库,允许您做任何您想做的GUI工作。

这件事的最大问题是,这有点难。就像,很难。这就是大多数人不再从事那种工作的原因。

那你还有其他选择吗?

最自然的是使用所谓的.NET语言。这些都是微软创建的一堆语言和库。它们可能是在Windows上获得GUI的最简单方法。问题是,您不能真正使用C语言(因为它不是.NET语言)。

假设您想呆在C/C++中,您可以使用某种库来简化Windows API的使用(因为它隐藏了所有丑陋的细节):

  1. 其中最常见的是MFC (类),它是一组C++类,使创建Windows的东西“更容易”。不幸的是,这个库非常古老,而且实际上并不容易使用。
  2. 如果您想在C++中编程,另一种方法是使用某种第三方库。这是一个由Microsoft以外的人创建的库,它使创建GUI变得更容易。
  3. 另一种选择是仅用语言创建软件的GUI部分,其他部分使用C/C++ (或者使用.NET语言完成几乎所有事情,只有在真正需要的时候才使用C/C++,例如,当您需要非常快的东西时)。这是一个很受欢迎的选择。

第三方库的优点是,如果选择正确的库,则可以使用相同的代码同时为所有操作系统创建GUI。

我认为这些库中最著名的是QT,还有WxWidgets,但是还有很多其他库。我个人会选择QT,因为它似乎获得了最大的声誉,但我也没有工作过。

票数 12
EN

Stack Overflow用户

发布于 2009-11-11 02:13:09

每个主要的操作系统都有用C实现的所有低级库。Mac OS X是一个类似Unix的系统,如果你是C程序员的话,这是一个很棒的世界。

Unix编程艺术获得一些很棒的想法。

至于GUI,您可能希望使用X11。有很多很好的文档--大多数Unix编程工具和最深层的系统级文档--只是假设您在使用C,因为这是每个人都在使用的。

票数 7
EN

Stack Overflow用户

发布于 2009-11-11 02:14:51

那得看情况了。如果您想构建桌面应用程序,一个主要语言为C的多平台GUI库是GTK+:

http://www.gtk.org/

对于游戏,请查看SDL:

http://www.libsdl.org/

它为你提供了像直接输入键盘,2D图形,一些音频,甚至线程之类的想法。如果您想进入3D世界,它还可以打开OpenGL上下文(但是在原始OpenGl中很难做到这一点)。我有提到SDL是多平台的吗?

然而,C的真正优势在于系统编程。对于桌面应用程序/游戏,也许您最适合使用C++。现在您已经掌握了C的命令,学习基本的C++应该很容易;)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1712546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档