C语言多文件编程
多个.c文件有什么用?其他成员编写的时候需要main函数,是否合并程序的时候要删除掉?怎么合并?怎么知道按什么顺序?是否只有全局变量能使用extern?...
多个.c文件有什么用?
其他成员编写的时候需要main函数,是否合并程序的时候要删除掉?
怎么合并?怎么知道按什么顺序?
是否只有全局变量能使用extern? 展开
其他成员编写的时候需要main函数,是否合并程序的时候要删除掉?
怎么合并?怎么知道按什么顺序?
是否只有全局变量能使用extern? 展开
5个回答
展开全部
多个c文件的作用在于将不同功能的代码分开来实现,这样便于代码重用、代码编译和代码管理。
一个程序中,只能有一个main函数,这是整个程序的起点和入口。如果其他人也实现了该函数,则必须要重新命名,然后在唯一的main函数中统一调用。
多个c文件的合并并没有顺序要求,任何一个都可以先编译或者后编译。
extern表示导出,可以用于函数和变量。用于函数的时候,表示这是一个外部函数,用于变量的时候,表示这是一个外部变量。
如果使用一个c文件,多个h文件,则会导致改动代码任何一个地方,都要重新编译所有的文件,效率上非常不划算。而使用多个c文件,当代码发生变更的时候,仅仅相关的c文件代码需要重新编译,其他代码则可以保持不变,不用参与编译。
函数中的局部变量无法在函数外部调用,只能通过参数传递的方式传递给第三方函数。因为局部变量是出于栈上面的,栈会随着函数调用完毕的时候被系统回收。
一个程序中,只能有一个main函数,这是整个程序的起点和入口。如果其他人也实现了该函数,则必须要重新命名,然后在唯一的main函数中统一调用。
多个c文件的合并并没有顺序要求,任何一个都可以先编译或者后编译。
extern表示导出,可以用于函数和变量。用于函数的时候,表示这是一个外部函数,用于变量的时候,表示这是一个外部变量。
如果使用一个c文件,多个h文件,则会导致改动代码任何一个地方,都要重新编译所有的文件,效率上非常不划算。而使用多个c文件,当代码发生变更的时候,仅仅相关的c文件代码需要重新编译,其他代码则可以保持不变,不用参与编译。
函数中的局部变量无法在函数外部调用,只能通过参数传递的方式传递给第三方函数。因为局部变量是出于栈上面的,栈会随着函数调用完毕的时候被系统回收。
展开全部
001
最少要num[4]来存。除了001三个字符,还有一个\0字符。所以第一次出错。只要改成num[4]就可以了,你改成num[10]就更可以了。c语言字符串是以\0结束的。
最少要num[4]来存。除了001三个字符,还有一个\0字符。所以第一次出错。只要改成num[4]就可以了,你改成num[10]就更可以了。c语言字符串是以\0结束的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多个.c文件利于代码的重复利用、模块化编程,保持每个文件中代码不过长,利于调试,可分段优化编译等
多个main函数当然要去掉,一般你使用其他人编的程序可以利用他们的函数,而要将main函数改写或去除重写
把这些可用的.c文件复制、添加到你自己的目录、自己的工程,还要添加这些.c文件中包含函数的.h文件,以便在调用函数之前引用
一般extern共享全局变量
追问
对于1.:为何不只用一个.c文件,多个.h文件??
对于3.:当 合并时,其他人的.h文件 应该 保存在 什么目录?
对于4.:我的意思是,假如一个变量在main函数里,在 其他函数 或 同工程不同文件 中,能否引用extern进行调用??
追答
比如优化编译时,是按照单独的文件来进行的,这样就把需要优化的函数放到一个.c文件中来做。
另外,如果我们需要单个.c文件中的一个函数时,其他函数的代码在编译时也会被连接到你的exe中,即使不用,如果把相关联的函数放在一个.c中会减少这样的空间浪费。
可以复制到自己的include目录或直接与.c文件混放
举例:
【a.c】
int sss[256];
main()
{
}
【b.c】中要用a.c中开设的变量sss
extern int sss[256];
然后拿来用即可,注意extern的变量不能带初始赋值,比如: extern int y=0;就不可以,这个只能在原始定义处做。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多个.C文件使你的程序具有更好的阅读性,而且一个.C对应自己的一个在自己文件的作用域,用extern可以将全局变量声明拓展出去,你在一个.c文件里面声明的变量无论是不是全局还是constant、static、局部,都只在自己的文件的作用域里面,用extern可以声明到其他的.c里面。编译的时候是按照先分开编译一个一个.c文件生成对应的一个个obj中间文件,然后再根据包含的头文件进行连接。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
便于模块化编程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询