c语言中的函数不能直接编译
一般来说编译过后就成了基本上能执行的2进制代码。但是这些2进制代码并不完善,一个程序往往需要调用不止一部分的代码,所以需要把这些代码全部整合起来才能执行。
即时你的程序看起来只有一个文件,但是编译过后,多多少少里面至少会调用到一些操作系统功能,和其它的一些设置,所以依然需要组建这个过程把这个程序和这些系统默认的代码组建起来形成一个完成、单一的可执行文件。所以一般组建过程就包含了组建内部和外部代码,一般来说内部代码就是我说的系统预留的必要的一些代码(例如怎么具体完成把一些字符显示在屏幕上呀这些功能),而外部代码就是额外的调用自己写得或者别人写得其它程序功能(往往当你的程序调用了非c标准函数的时候)。
所以就算你的代码可以编译,但是可能因为组建并不成功(例如需要组建的代码本身有bug,或者丢失,或者版本不匹配),你的程序依然可能无法正确运行。
㈡ “C语言的预处理 不能实现宏定义和条件编译的功能”和“C语言的预处理不能实现宏定义和条件编译的功能”
这两句话是一个意思, C语言中的预处理,是可以实现宏定义和条件编译功能的。比如下面的代码定义了一个宏S,它的值是”hello world ",可以用printf函数直接打印出来。
#include<stdio.h>
#defineS"helloworld "
intmain()
{
printf(S);
return0;
}
C语言中的预处理也可以实现条件编译功能,预处理到现在依然存在的一个重要原因就在于此。比如下面的代码:
#include<stdio.h>
intmain()
{
#ifdef_DEBUG
printf("程序生成的debug版 ");
#else
printf("程序生成的是release版 ");
#endif
return0;
}
㈢ C语言中的函数不可以单独进行编译。这句话为什么不对
C语言中的函数可以单独进行编译,编译为目标文件,要链接成可执行文件时,需要主函数以及库。
㈣ 在c语言中,把两个函数放在两个程序文件中,怎样作为两个文件进行编译,连接和运行
不知道你用的是什么编译器,如果用的是VC的话,可以尝试下我的做法:
创建两个源代码文件:1.cpp和2.cpp
1.cpp中内容:
#include<stdio.h>
#include"2.cpp"/*采用包含命令调用2.cpp中的函数*/
int max(int x,int y)
{
return x>y?x:y;
}
int main()
{
int a,b,m,n;
a=10;
b=30;
m=max(a,b);
n=min(a,b);
printf("%3d%3d\n",m,n);
return 0;
}
2.cpp中内容:
int min(int x,int y)
{
return x<y?x:y;
}
把这两个源代码放到一个文件夹下,编译并运行1.cpp即可。注意,2.cpp中没有main函数,所以不能直接编译2.cpp。其实由于最终1.cpp和2.cpp要连接到一起形成一个可执行文件1.exe,所以2.cpp中也不能有main函数。
㈤ C语言中一个函数如果在主函数中没有调用,会被编译么
会的,当你运行时,编译器还要检查你的函数是否有格式或其它错误!
㈥ ubuntu中编译C语言程序时使用数学函数时总是出问题编译不能通过,这要怎么解决呢
math在连接时需要添加参数,很久不搞linux的程序了,我映像是-o 编译时加上 -lm像下面这样:
gcc -lm -o xxx.out xxx.c
因为math.h不是C运行库函数,就像linux下线程函数库pthread.h也不是,都需要在编译时连接该库
如果你有IDE(如eclipse)+ GCC 开发C程序,可以在项目属性中编译命令中添加-lm,作用是一样的 (本人用VI很不熟练。。。)
楼主如果需要可以到www.eclipse.org下载IDE,不用手动添加Mingw和GCC,它已经全部搞定了,用起来很方便。
㈦ 在C语言程序中,只有main函数才可单独进行编译,哪里错了
有函数的都可以单独进行编译,编译是指把程序语句翻译为机器代码,对于C语言就是把.c文件翻译为.obj文件。
此外,必须要有main函数的才可以完成连接为exe文件。