大家好,今天小编关注到一个比较有意思的话题,就是关于c语言函数源代码的问题,于是小编就整理了4个相关介绍c语言函数源代码的解答,让我们一起看看吧。
c语言编译的每个函数都可以进行独立的编译并执行吗?
1、可以单独进行编译。编译器自带的函数库就是这样的。
2、C语言中的函数可以单独进行编译,编译为目标文件,要链接成可执行文件时,需要主函数以及库。编译是指把程序语句翻译为机器代码,对于C语言就是把.c文件翻译为.obj文件。此外,必须要有main函数的才可以完成连接为exe文件。
C语言源程序中其他函数也能调用main()函数吗?
一个main函数对应一个线程,对于操作系统而言,是可以多线程的,就好像你同时打开两个应用程序一样,而两个线程之间要实现数据交流则要通过共享内存或者管道什么的。
所以简单的理解是一个程序只能有一个线程或main函数,一个main函数里可以调用其他进程或者函数,而对于操作系统而言,没有mian函数的概念,但是可以给每个线程分配cpu***,各个线程同时运行,但不能相互调用,线程是相互独立的。
只能通过共享机制实现互相通信。
c语言目标函数扩展名?
源程序:程序可以用高级语言或汇编语言编写,用高级语言或汇编语言编写的程序称为源程序。C语言源程序的扩展名为“.c”。源程序不能直接在计算机上执行,需要用“编译程序”将源程序编译为二进制形式的代码。
目标程序:源程序经过“编译程序”编译所得到的二进制代码称为目标程序。目标程序
C语言printf“()”真的会将输出发送到屏幕吗?
printf函数是C语言的标准函数库中的一个输出函数,它的功能就是表面上把数据输出到屏幕中。这里要注意一下,我提到了一个词是“表面”!看似好像C语言的printf函数把数据输出到屏幕上显示出来,其实printf函数是把数据输出给一个“流”,这个流叫做“stdout”,而不是真的直接输出到屏幕。是不是有点意思?下面看我详细讲来!
计算机有很多的输出设备,我们最常见的就是显示器,也就是常说的“屏幕”。但是计算机的输出设备可远远不止显示器这个屏幕。还有一些输出设备,比如:
打印机。你的电脑和你学习的电脑一般都会连接着一台打印机吧,此时打印机就算是一个输出设备;
音箱。电脑内置的音箱毕竟性能有限,不足以播出优美的歌声。有的音乐发烧友会使用电脑外带一组音箱,通过更专业的音箱来享受较好的音乐效果,这里的音箱也是输出设备。
U盘、硬盘等。你常用的U盘等接在电脑的USB接口上,只要向U盘拷贝数据,此时U盘也是输出设备。
一台计算机可以外接这么多的输出设备,但是C程序代码中的printf函数可不知道有这么多的外接设备,它是怎么向外输出数据的呢?
既然计算机外接了这么多的输出设备,C语言的printf函数显然不可能直接跟显示器、跟打印机、跟音箱打交道,聪明的程序设计者想出了一个:把所有的这些外接的输出设备全部用一个叫做“stdout流”的东西统一表示。说白了,就是在C程序和具体的输出设备之间多了一个stdout流。
对于C程序而言,C程序的printf函数只把数据输出到stdout流,再由操作系统把数据从这个stdout流中拿出给到具体的输出设备。比如如下这段C程序代码:
如果直接编译运行,C程序代码会将字符串'1234"输出到stdout流,再由操作系统将字符串“1234”送到显示器上显示。
先来看一下C语言的printf()函数的实现源码,实际上是调用的vprintf方法,而vprintf方法又调用了vfprintf方法,这个方法是将字符串输出到标准输出流stdout里面,与它关联的是一个FILE对象,这个FILE对象的文件描述符是非负整数。
对于标准输出stdout来说这个整数是1,如果是错误输出stderr那就是2,标准输入stdin为0。默认情况下文件描述符0、1、2是和终端关联的,所以我们可以看到屏幕上的结果。可见,printf()并不是将结果直接发送到屏幕上的,它是通过将内容输入到一个不可见的文件中,这个文件描述符关联终端进行显示结果的。如果我们不希望将结果输出到终端,那么需要进行重定向,即使用>符号将结果重定向到一个文件中。
C语言的printf不是把字符串输出到屏幕,而是写入到一个特殊文件。这个特殊文件你在[_a***_]上是看不见的,只能通过文件描述符来引用,并且每个进程都有这种特殊文件。C语言的程序运行起来以后,printf把内容输出到这个文件,而这个文件一般都与命令行终端(或者说的通俗一点,命令行窗口)关联起来的,所以你可以在屏幕上看到输出。
到此,以上就是小编对于c语言函数源代码的问题就介绍到这了,希望介绍关于c语言函数源代码的4点解答对大家有用。