为什么说C/C++是跨平台的?

时间:2022-01-08 06:13:18
在windows下写软件不是要用windows的API,linux下用linux的API吗?
难道用windows API写的程序能移植到linux吗?

目前只学了点C的皮毛,只会在黑白屏幕上简单的用用if for switch function什么的。。
到底如何用C编写跨平台的软件的?有什么书推荐吗?

16 个解决方案

#1


应用标准库/

#2


既然是初学,何必深究?
一开始不跨平台也没事,

#3


用标准库才可以跨了。
例如:在windows下用mfc肯定是不能跨到linux下面的,因为linux下没有MFC这个东东。

#4


使用标准库,window下和linux下是一样的,其他平台差异要通过条件编译实现。

#5


跨平台需要条件编译。

#6


在windows下学c感觉没什么前途,因为c一般都是和硬件打交道,而且大多数都用linux

#7


引用 5 楼 qq120848369 的回复:
跨平台需要条件编译。

++

#8


C和C++所谓的夸平台是指,C和C++的标准语法在每一个平台上都是一样的,因此用C和C++语言编写的程序在任何一个平台,只要该平台有支持标准语法的编译器都能编译运行。

楼主说的win的API,编写的程序肯定是不能到Linux上运行的,这点很容易从C的语法层面上理解,win的API在C语言来看,其实就是一些函数,这些函数有了声明,但是函数的实现被win隐藏了,如果你移到Linux上,自然编译不通过(因为没有函数的实现)

楼主既然是初学,建议先别急着考虑跨平台的问题,楼主只需要持之以恒的编程,坚持不懈的学习,等学到一定的程度,自然就能理解了。

#9


发是使用标准库就可以跨平台。

#10


跨平台是扯蛋了,除了标准c库是通用的,什么界面了,底层调用了都平台相关的。所以c跨平台只是个璩头。

#11


引用 10 楼 xiaoyaoxiaonizi 的回复:
跨平台是扯蛋了,除了标准c库是通用的,什么界面了,底层调用了都平台相关的。所以c跨平台只是个璩头。

C的跨平台是源码级别的,Java跨平台是二进制级别的,如此而已。

#12


谢谢各位。
现在C的基本语法都会了,就是指针还有点似懂非懂,有什么进阶的书推荐吗?
还有我的代码都是在linux下用vim写的,你们都是在linux的图像界面写代码还是命令行界面写代码的啊?

#13


引用 12 楼 iScript 的回复:
谢谢各位。
现在C的基本语法都会了,就是指针还有点似懂非懂,有什么进阶的书推荐吗?
还有我的代码都是在linux下用vim写的,你们都是在linux的图像界面写代码还是命令行界面写代码的啊?
QT

#14


只要用的库是跨平台的,那么源代码就可以重新编译在新机器上运行。
标准库一定是各平台都支持的,许多第三方库都是跨平台的。

#15


跨跨跨跨。。。

#16


引用 12 楼 iScript 的回复:
谢谢各位。
现在C的基本语法都会了,就是指针还有点似懂非懂,有什么进阶的书推荐吗?
还有我的代码都是在linux下用vim写的,你们都是在linux的图像界面写代码还是命令行界面写代码的啊?


指针如果还似懂非懂,那么说明你现在还木有必要研究“跨平台”之类的问题,先得把这个问题高清楚,在考虑什么进阶之类的事情。

#1


应用标准库/

#2


既然是初学,何必深究?
一开始不跨平台也没事,

#3


用标准库才可以跨了。
例如:在windows下用mfc肯定是不能跨到linux下面的,因为linux下没有MFC这个东东。

#4


使用标准库,window下和linux下是一样的,其他平台差异要通过条件编译实现。

#5


跨平台需要条件编译。

#6


在windows下学c感觉没什么前途,因为c一般都是和硬件打交道,而且大多数都用linux

#7


引用 5 楼 qq120848369 的回复:
跨平台需要条件编译。

++

#8


C和C++所谓的夸平台是指,C和C++的标准语法在每一个平台上都是一样的,因此用C和C++语言编写的程序在任何一个平台,只要该平台有支持标准语法的编译器都能编译运行。

楼主说的win的API,编写的程序肯定是不能到Linux上运行的,这点很容易从C的语法层面上理解,win的API在C语言来看,其实就是一些函数,这些函数有了声明,但是函数的实现被win隐藏了,如果你移到Linux上,自然编译不通过(因为没有函数的实现)

楼主既然是初学,建议先别急着考虑跨平台的问题,楼主只需要持之以恒的编程,坚持不懈的学习,等学到一定的程度,自然就能理解了。

#9


发是使用标准库就可以跨平台。

#10


跨平台是扯蛋了,除了标准c库是通用的,什么界面了,底层调用了都平台相关的。所以c跨平台只是个璩头。

#11


引用 10 楼 xiaoyaoxiaonizi 的回复:
跨平台是扯蛋了,除了标准c库是通用的,什么界面了,底层调用了都平台相关的。所以c跨平台只是个璩头。

C的跨平台是源码级别的,Java跨平台是二进制级别的,如此而已。

#12


谢谢各位。
现在C的基本语法都会了,就是指针还有点似懂非懂,有什么进阶的书推荐吗?
还有我的代码都是在linux下用vim写的,你们都是在linux的图像界面写代码还是命令行界面写代码的啊?

#13


引用 12 楼 iScript 的回复:
谢谢各位。
现在C的基本语法都会了,就是指针还有点似懂非懂,有什么进阶的书推荐吗?
还有我的代码都是在linux下用vim写的,你们都是在linux的图像界面写代码还是命令行界面写代码的啊?
QT

#14


只要用的库是跨平台的,那么源代码就可以重新编译在新机器上运行。
标准库一定是各平台都支持的,许多第三方库都是跨平台的。

#15


跨跨跨跨。。。

#16


引用 12 楼 iScript 的回复:
谢谢各位。
现在C的基本语法都会了,就是指针还有点似懂非懂,有什么进阶的书推荐吗?
还有我的代码都是在linux下用vim写的,你们都是在linux的图像界面写代码还是命令行界面写代码的啊?


指针如果还似懂非懂,那么说明你现在还木有必要研究“跨平台”之类的问题,先得把这个问题高清楚,在考虑什么进阶之类的事情。