1. C语言中函数的地址在编译时就分配好了,为什么不会产生地址冲突运行时刚好那个地址有别的程序在用
函数的具体武理地址不是编译的时候分配的,是运行的时候由系统分配的!如果你看一下生成的汇编代码你就会发现进入函数时的操作是将返回地址压栈后通过CALL跳转到函数开头处执行,压栈的函数地址都是偏移量,实际地址在运行时通过基址加减偏移量得出。另外通常程序的内存空间是专用的,两个程序的空间互不冲突,普通用户程序不可以访问其他程序的内存空间!
2. 编译系统,编译程序,库函数,之间有什么关系
由库提供的,即不是编译器环境也不是系统编译器调用库调用系统服务只不过有的编译器集成了库,库并不是编译器必须携带的,所以你可以自己指定库的位置
3. 关于C程序的编译问题
如果你要跨平台编译C程序,有很多要注意的。
1 基本上来说,依赖的头文件和动态库本身必须是跨平台的。(windows的MFC就不要提了。)
2 程序中如果涉及的内存操作,得关注类型位长是否一致。
3 操作系统差异,有些技术和实现细节并不通用,例如linux的一些LPC操作WINDOWS没有、线程操作有差异等等。
4 还有编译器对c的标准实现不一致。(c的标准化实现差异还不算大,c++就差异很大了)
5 还有部分系统差异。例如:路径表示不一样等等。
其他的就是细节了。
4. 为什么用C++6.0编译不对
看看在你的程序最前面有没有这一行#include "stdafx.h"没有的话,加上再试试
致命错误C1010:在寻找预编译指示头文件时,文件未预期结束。
就是没有找到预编译指示信息的头文件。
问题一般发生在:通过添加文件的方式,添加了一些cpp文件到一个MFC的程序,但该cpp文件并不是MFC,而是标准的C++。
解决方案1: 右键单击项目工程中的cpp文件,在菜单Project->Settings->C/C++->Precompile Header,设置为第一项:Not using precompile headers。
解决方案2:在.cpp文件开头添加包含文件stdafx.h。 #include"stdafx.h"
5. JAVA编译找不到系统函数
1 基本设置问题
2 代码错误
3 jdk 有的版本不支持某些方法,可以用其他的版本
6. C++编译器问题
应该是跟系统函数名冲突了,换个别的名称就可以了。
7. VC++编译问题
可能是使用了未定义的成员函数,具体要看代码了。
8. 什么是与'malloc'类型冲突
malloc 是系统函数,很多编译器都默认包括这个函数。不能被重新定义,否则冲突。
9. 编译中c函数冲突怎么办
把自己的函数换个名字,或者在想办法把unistd.h中的声明屏蔽掉,或者干脆不用huistd.h。
10. C语言中使用编译器时system函数使用问题
加一个#include<stdlib.h>试一试