// 定义max.c源文件,以下是文件内容 int max(int a, int b) { return a > b ? a : b; } // 定义max.h头文件,文件内容 int max(int, int); // 在main函数所在文件中,要加入#include "max.h",而且要和main文件在一个文件夹内 // 编译文件gcc -c max.c -o max.o // 生成最终文件gcc max.o main.c -o main.out // main.c就是包含main函数的文件,可以根据自己命名文件来修改 // 讲课视频中不出现编译问题,就是因为编译器不同造成的
一个c文件对应一个可执行文件即.out文件。要想2个c文件对应一个可执行文件,那么主函数中必须有调用另一个文件的指令。
没有特别说明的时候编译出来的文件名是a.out,可以通过“-o hello.out”说明文件名
版本问题。报错后你运行./a.out程序还是能成功运行的
int max(int a, int b)编译了两次,
u撤销
gcc版本太低的原因,接下去的视频会讲,需要声明一下
找不到方法max 有引入max.c吗
如果main函数中声明了max和min的话,gcc就不用再传这两个文件了。如何让gcc max.c min.c main.c - o main.out不产生warning呢?
vim是文本编辑器,语法高亮,自动缩进,非常强大!
nano相当于notepad,没有vim强大
一、#include <stdio.h>
int main()
{
int a,b;
printf("请输入小于等于40的数字");
scanf("%d",&a);
if(a < 0)
b = 0;
else if(a >= 0 && a < 20)
b = a;
else if(a >= 20 && a <= 40)
b = -0.5*a+20;
printf("%d\n",b);
}
二、
#include <stdio.h>
int main()
{
int a, b;
printf("请输入小于等于40的数字");
scanf("%d",&a);
switch(a)
{
case 0:
b = 0;
break;
case 1 ... 19:
b = a;
break;
case 20 ... 40:
b = -0.5 * a + 20;
break;
default:
printf("结束");
}
printf("%d\n",b);
}
注:switch的不是很严谨!!
1、重复编译了max是因为你在main函数里面include"max.c",这个include的意思就是将max.c里面的代码复制过来了,那么你再gcc hello.c max.c就会出现重复定义了,所以你只要把#include"max.c"这一行代码注释掉或者gcc hello.c就好了
2、-o main.out就是给生成的可执行文件命名为main.out,如果没有这句话,那么默认的可执行文件名为a.out
???你去上网搜一个ubuntu麒麟版 下载 。然后再在网上上找一个破解版的vmware station 就行了
这是我写的
先Esc到命令窗口再冒号(:)wqa
不是#include "max.o",应该#include "max.h"
原来要进入命令模式啊。。。
在hello.c中加了#include "max.c" 以后,仅相当于把max.c里面的代码粘贴放到那里了,所以在外面用gcc编译的时候:gcc hello.c 就已经包含了max.c的内容,如果输入:gcc hello.c max.c 就相当于有两段max.c里面的代码,会报重复的错误
if(a.b)操作符有问题。'.':是点操作符,不能用在int类型之间。另外虽然只是warning,但应该知道你的两个变量都没有定义类型,C是强类型语言,需要先定义类型。
sudo yum install gcc
在main函数之前添加max函数声明,#include“max.c”,可能所用vim版本不够智能。
应该光标在行首
播放器右下角设置里改成HTML播放器。。100倍不会改。。
你自行补全插件下载了没有呢,你下载把自动补全插件下载了加入VIM中,应该就可以了
关于这个问题,有大神指导吗?
定义的max函数要写出形参类型和变量名,否则main函数里面无法调用的。
还有就是把max函数定义为 int max(int a,int b, int c),函数体内第二个if没有用的,要么输出a,要么b,无论如何也无法输出c哦。
在hello.c加#include "max.c"