如何把linux下的C程序移植到windows下面

如何把linux下的C程序移植到windows下面,第1张

看你用了什么库文件的函数

然后查一下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要做哪些修改等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9294924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存