实际上是什么是C运行时库以及它用于什么?我正在搜索,谷歌搜索像魔鬼,但我找不到比微软更好的东西:"微软运行时库提供了Microsoft Windows操作系统编程的例程.这些例程自动执行许多常见的编程任务,这些任务不是由微软提供的. C和C++语言."
好的,我明白了,但是例如,是什么libcmt.lib?它有什么作用?我认为C标准库是C编译器的一部分.那么libcmt.libWindows的C标准库函数的实现是否可以在win32下运行?
好的,这应该是谷歌的某个人,但我只想要其他意见.
即使Android支持Native代码应用程序,主要的开发工具是Java.但为什么?我的意思是,在移动设备上解释代码是不是太慢了?在介绍Froyo时,Google表示新的JIT编译器可以将应用程序的速度提高2-5倍.这意味着,使用Java而非本机代码的速度要慢2倍.
是的,我知道使用托管代码应用程序在系统稳定性方面更安全,因为虚拟机可以更好地控制程序,但是,这种性能下降是巨大的,我没有看到为什么要使用它.
首先,我知道这是一个常见的问题,但我找不到我想要的确切答案.
我使用Swing在Java中完成了很多项目.从编写GUI开始,然后转移到GUI设计器.事实证明,这是构建GUI应用程序的一种非常快速简便的方法.
但现在,我需要转向C++.我正在开始一个使用大量硬件资源的项目(DirectX,OpenCV等......)我知道有这些技术的Java库.但是,考虑到这个项目的内部,C++绝对是正确的方法.
我从MCU编程中很好地了解C和C++语言.另外,我已经阅读了许多关于本机WinAPI编程,Windows内部等的文章.我认为我有足够的知识可以开始.我不想担心GUI设计,但它必须看起来合适.
我知道有几个基本选项:纯WinAPI,MFC,WTL,Qt ......如果有某种GUI设计工具我会很高兴,但是从我的研究来看,没有.有一个MFC向导,它有助于创建一个基本窗口,但它不是一个设计师.我找到的最接近的是Qt.但是从我读到的内容来看,它并没有使用WinAPI进行绘图,因为将来Qt编写的应用程序的外观和感觉可能与本机Windows外观不同.
那么,总而言之,如果您有使用GUI创建本机Windows C++应用程序的经验,您会向我推荐什么?具体来说,我错过了任何工具或设计师吗?
(我使用的是Visual Studio 2010专业版,因为我有免费的DreamSpark项目)
可能重复:
C++中的垃圾收集 - 为什么?
嗨,我读了几篇关于垃圾收集器的文章,还有一件事我不明白 - 为什么要使用垃圾收集?
我会试着解释一下我的想法:
垃圾收集器应该在不需要的情况下将动态分配的内存释放回系统,对吧?所以,如果你用C语言编写程序,你就知道你需要一些内存,所以如果没有,你可以简单地销毁它.
那么,为什么要使用GC,当你需要做的事实上只是明智的内存分配/释放?或者我错过了什么?谢谢.
当我第一次看到C#时,我觉得这肯定是个玩笑.我开始用C语言编程.但是在C#中你可以拖放对象,然后只为它们编写事件代码.这很简单.
现在,我仍然最喜欢C,因为我非常喜欢基本的低级操作,而C只是下一级汇编程序,几乎没有基本的例程,所以我非常喜欢它.更多是因为我为微控制器编写了很少的应用程序.
但昨天我在asm中为基于微控制器的LED立方体编写了非常简单的控制程序,我需要一些方法来简单地为Cube创建动画序列.所以,我记得C#.我几乎没有C#技能,但我仍然创建了简单的程序,用GUI在大约一小时内完成动画序列,只需谷歌的帮助和C#中嵌入的功能描述的帮助.
那么,为了达到这一点,还有其他原因,那么最高速度,使用除C#之外的任何其他语言?我的意思是,它是如此有效.我知道Java有点类似,但我希望C#更直接来自微软,因此更有效.
第二个问题是,编译成CIL,而不是运行CLR,直接将其编译成机器代码有什么好处?我知道可移植性是一个,但由于C#主要用于Windows,直接编译它不会更强大吗?谢谢.
我只想问两个关于OOP的快速问题.
首先,OOP语言编译器实际生成的代码是否与过程语言编译器有什么不同?我的意思是,OOP只是关于你如何编写代码,还是实际编译的代码与程序不同?像C这样的更精确的过程语言基本上会产生类似于ASM编写的代码.但是OOP代码有什么不同吗?
第二,如果OOP代码在其机器代码形式中使用不同的方法,它是否比程序更慢或更快?谢谢.
非常简单的问题,我读到GCC支持long long int类型.但是,当CPU只有32位宽时,如何使用它进行数学运算?
一些C++编译器允许main函数具有返回类型void.但是,操作系统int是否需要返回类型值以指定程序是否正常结束?
我只是想问一下,我知道Linux中的标准系统调用是通过指向中断向量表的int指令完成的.我认为这在Windows上类似.但是,您如何调用某些更高级别的特定系统例程?比如你怎么告诉Windows创建一个窗口?我知道这是由dll中的代码处理的,但在汇编程序指令级别实际发生了什么?dll中的例程是通过int指令调用软件中断,还是有任何不同的方法来处理它?谢谢.
很长一段时间,我正在思考和研究汇编形式的C语言编译器的输出,以及CPU架构.我知道这对你来说可能很愚蠢,但在我看来,事情是非常无效的.如果我错了,请不要生气,并且有一些原因我没有看到所有这些原则.如果你告诉我为什么这样设计,我会很高兴的.我实际上真的相信我错了,我知道让人们聚在一起的人的天才头脑知道这样做的理由.究竟是什么,你问?我马上告诉你,我用C作为例子:
1:堆栈本地范围内存分配:
因此,典型的本地内存分配使用堆栈.只需将esp复制到ebp,然后通过ebp分配所有内存.好的,如果您明确需要默认堆栈RAM,我会理解这一点,但如果我理解它正确,现代操作系统会使用分页作为应用程序和物理RAM之间的转换层,当您需要的地址在到达实际RAM之前进一步转换字节.那么为什么不说0x00000000是int a,0x00000004是int b等等?并通过mov 0x00000000,#10访问它们?因为您实际上不会访问内存块0x00000000和0x00000004,而是您的操作系统将分页表设置为.实际上,由于ebp和esp的内存分配使用间接寻址,"my"方式会更快.
2:变量分配的两面性:
运行应用程序时,Loader将其代码加载到RAM中.当您创建变量或字符串时,编译器会生成代码,以便在main中创建时将这些值推送到顶部堆栈.所以有实际的指令,以及内存中的实际数字.因此,RAM中有2个相同值的条目.一种是指令形式,第二种是RAM中实际字节的形式.但为什么?为什么不在声明变量计数到哪个内存块时比使用时,只需插入这个内存位置?