看你用了什么库文件的函数
然后查一下windows平台有没有相同的函数或者相同功能不同命的函数
如果没有的话,就需要你自己实现了
如果需要跨平台移植的话,最好不要用平台相关函数,或者加一个接口封装,把所有依赖平台的函数都封装到一个库里面,改变平台时,只需要实现这个库就可以了
头文件无法找到只是表象,函数找不到才是根
楼主既要使用C语言编译器,又想使用C++编译器的话,编码风格要使用标准C语言的风格,这样C++同时可以兼容。
VC6编译报错可能是如下原因:
1、局部变量的定义和初始化必须在函数的最开始,不能放在函数的中间部分
2、scanf_s函数的使用,scanf_s并不是标准的库函数,有些编译器并没有该函数,推荐使用scanf函数,虽然不太安全
VS2013运行错误可能是如下原因:
1、很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时hacker可以利用原版的不安全性黑掉系统。比如:char d[20];写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提高。既然使用了scanf_s函数,就不能单纯的写scanf_s(" %s [%d][%d]", s, &m, &n);,就需要对%s制定可以输入的最大字符才行
int m, n; //局部变量放在函数的最开始char s[6];
int size = 4;
void p;
int q ;
int i,j;
printf("请定义一个二维数组,格式如下: int [3][4]\n");
printf("数组类型只限于int ,char , float, int, char\n");
printf("请只在声明数据类型和数据之间输入空格!\n");
printf("本程序容错性很差, 请按照要求谨慎 *** 作!\n\n");
scanf_s(" %s [%d][%d]", s, 5, &m, &n); //s,5,指明s最多接收5个字符
p = malloc(size m n);
q = (int )p;
memset(p, 1, size m n);
IAR的C文件移植到STVD要做的不需要把整个工程移过来,只需要在IAR新建工程,把Keil中的那个C源程序复制过来,在IAR重新生成各种工程文件即可
1:全局查找功能:
STVD:全局查找功能全局查找功能比较麻烦,有3个动作。IAR:有全局查找功能比较方便,只要一个动作,和KEIL一样。
2:编译时间。STVD:相对比较慢。IAR:相对快点。
因为IAR可以分两个工程文件放置,编译时候我们可以只要编译更改的工程文件就可以了。因此就不用将所有文件都编译一次,以此省一点时间。
“偶是队长”见多识广,所言极是!!C语言的“可移植性强”是和汇编语言相比而言的。早期计算机没有统一的 *** 作系统,程序员要直接对硬件编程,不同计算机的汇编指令集各不相同,为一个计算机编写的程序要想移植到另一台计算机上运行,要根据具体计算机的指令集进行大量修改。C语言因为可将源程序为不同计算机编译成不同的二进制程序,而无须修改C语言源程序,对于编程者来说,就是提高了可移植性。现在有了成体系的 *** 作系统,这个档次的可移植性就没什么优势可言了。当前环境下,可移植性高的语言当属JAVA,口号是“一处编程,处处运行”,在不修改源代码的情况下,程序可以跨 *** 作系统运行。由于JAVA的娘家SUN公司还不够强势,事实上更换到某些平台时, *** 作系统厂商各自为政,某些代码移植时还是要进行一点修改的,不过SUN正致力于形成更强势的标准来解决这类问题。而它的竞争对手微软公司,也正在致力于形成另一套标准来打破SUN的统一标准。欲知后事如何,且看市场分解。
严格的说,C语言不可以移植。这里的“移植”指的是在不兼容平台(如linux和windows)上可以不重新编译的情况下直接运行。
如果你在windows7上面编译的程序,在windows10上可以运行,这并不能算可移植。C语言是机器相关的语言,所以它并不能移植。不过随着技术的发展,C语言和C++借助一些开发框架,也能实现一定程度上的可移植性,比如QT框架就是一个可跨平台的GUI程序。
当然可以,把代码放到LINUX环境下,用GCC来编译,如果不使用线程等需要特别指定链接的库,只要有标准的C,C++库,就可以gcc -o obj objc
这样来编译,如果你标准库都没有,就从网上下标准库的包,解到/usr/lib下,一般这是默认的路径
原本类中定义的函数单独写出来,处理数据的地方使用结构体代替。
//C++//classAh
class A
{
void fun1();
int m1;
int m2;
};
//C
//classAh
void fun1();
typedef struct
{
int m1;
int m2;
}classA;
classA A;
//cpp
void A::fun1()
{
}
//c
void fun1()
{
}
//cpp中使用的成员函数m1在c中以Am1代替。
以上就是关于如何把linux下的C程序移植到windows下面全部的内容,包括:如何把linux下的C程序移植到windows下面、C语言编译器移植问题、IAR的C文件移植到STVD要做哪些修改等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)