c语言编译运行后出现make
① c语言编译运行出现Makefile.win已经改变,怎么改
这个提示是说你当前项目里有多个文件里都有叫main的函数,这样会导致系统不清楚从哪个main执行,建议你可以把其它文件里的main随便改下下名字比如叫main1什么的,只把你当前要运行的文件里的主函数改为main就行了。
或者建议如果只有一般的测试代码只有一个文件的那种,新建的时候就不要建项目,直接建文件就可以了。
② DEV-C++中c语言的文件编译 的时候自动生成了一个makefile.win的文件而且编译器在该文件中报错。
这不是在make文件中报错的,调试报错信息需要从最开头开始查看,你的main.c文件中有3个未定义的引用。分别是:initwindows、beginpaint、endpaint.还有一个指针没有初始化指向了0x0地址。所以程序编译被错误中断了,没有生成exe文件,所以make文件在执行exe文件时找不到目标。上面缺少的那些引用应该是用来绘制窗体的函数,应该是位于哪个系统头文件中,你的代码中应该是没有添加相应的头文件引用才导致上述问题的。另外,指针在使用之前一定要初始化,通过函数赋值以后一定要判断是否赋值正确(一般判断是否为NULL)
③ 写c语言编译运行的时候出现这个怎么解决
这个错误和你发上来的这个图没多大关系
这个是makefile
写的应该没什么问题
出错的是main.c
里面调用了max
但是没有找到max函数。
你定义 或者声明一下这个就可以了
④ .mak是什么文件
mak 文件里面存放的是编译时的参数配置,make命令是有了c以后才会有的,他是用来操作.mak文件的。
这个是学了编程的人才会明白是咋回事的,有学C语言的话应该多多少少都会看见这个后缀的文件,很多人在学习编程入门的时候都会学习C语言。
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
⑤ 用c语言做出来的exe,运行后,出现的文件是什么,扩展名为out
这是中间文件,编译器将源代码编译成中间文件,链接器负责将中间文件和必要的库一起链接成可执行文件
一般只在多文件编译时有用(修改时可以只编译修改过的文件,未变化的文件可以直接链接而无需重新编译),如果不需要,编译完可删除,只是临时文件而已
⑥ linux中用C语言编写完模块后怎么编写makefile文件用到什么命令以什么格式编写
vi Makefile #打开vi编辑器
在编辑器里输入以下内容:
#当只有一个文件需要编译的时候
finame:filename.c #冒号前面是要编译成的目标文件(可以任意命名),后面是你编写的C文件
gcc -o filename filename.c #gcc前面是按Tab制表符
#filename:filename.c 是指filename文件的生成要依赖filename.c文件
#然后换行后按Tab键,然后编写编译规则
#make命令一般是同时编译多个文件时才使用,以下是同时编写多个独立的C文件
#filename1和filename2……没有依赖关系
filename1:filename1.c
gcc -o filename1 filename1.c
filename2:filename2.c
gcc -o filename2 filename2.c
#makefile编译多个需要依赖(互相调用的文件)
main:main.o file1.o file2.o #main是最终要生成的目标文件,后面.o就是需要调用的文件的对象文件
main.o:main.c
gcc -c main.c #生成main.o对象文件,main.c里面是有主函数的
file1.o:file1.c
gcc -c file1.c
file2.o:file2.c
gcc -c file2.c
#以上差不多就可以用了
#一下是我找的例子
#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s\n",print_str);
}
/* mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif
/* mytool2.c */
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("This is mytool2 print %s\n",print_str);
}
当然由于这个程序是很短的我们可以这样来编译
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o main main.o mytool1.o mytool2.o
这样的话我们也可以产生main 程序,而且也不时很麻烦.
# 这是上面那个程序的Makefile 文件
main:main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o:main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o:mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o:mytool2.c mytool2.h
gcc -c mytool2.c
有了这个Makefile 文件,不过我们什么时候修改了源程序当中的什么文件,我们只要执行
make 命令,我们的编译器都只会去编译和我们修改的文件有关的文件,其它的文件她连理
都不想去理的。
下面我们学习Makefile 是如何编写的。
在Makefile 中也#开始的行都是注释行.Makefile 中最重要的是描述文件的依赖关系的说
明.一般的格式是:
target: components
TAB rule
第一行表示的是依赖关系.第二行是规则.
比如说我们上面的那个Makefile 文件的第二行
main:main.o mytool1.o mytool2.o
表示我们的目标(target)main 的依赖对象(components)是main.o mytool1.o mytool2.o
当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令.就象我们的上
面那个Makefile 第三行所说的一样要执行 gcc -o main main.o mytool1.o mytool2.o
注意规则一行中的TAB 表示那里是一个TAB 键
⑦ c语言!!编译的时候出现这个提弹窗,makefile.win已经改变,是否重新从硬盘读取。这是什么
主要原因可能是:1.在编译器外打开、加载或修改了所用文件。2.可能是引用或打开的路径不正确。3.某些语法错误时引起编译器对后面程序的错误解读,报出错误的警报信息。
可以尝试:1 关闭文件后重新,关闭编译器后重新打开项目。2.关闭其他打开该文件的软件或者编辑器 3.注释掉新修改部分的代码,排查错误。
⑧ 求编程高手帮助,程序编译正确,不过运行后出现出错,感觉应该是释放动态内存方面出了问题。
你这里
q[i]=new int[first];
new的是first个元素的数组,但是在赋值的是后
q[i][0]=first;
for(j=1;j<=first;j++)
scanf("%d",&q[i][j]);
给了first+1个元素赋值,所以破坏了内存了。改成
q[i]=new int[first+1];就OK了