- 论坛徽章:
- 0
|
问:假如机器里没有操作系统,是否可以将机器码直接执行?
答:应该是不可以,因为机器码也是基于操作系统的,有一些操作系统功能接口的调用。
问:那这么说机器码一定要在操作系统下配合才能运转喽?
答:不错
问:那同样的C++代码在不含有涉及操作系统功能接口调用的情况下在 linux系统下编译后得到的机器码,拿到同型号机器上的WIN系统下,也可以直接运行喽?
答:不会执行,因为这取决与你的编译系统,在LINUX系统下的编译器编译出来的东东,不一定在WIN下都可以用。
问:既然这样,C++还是个标准吗? 不是说standard c++ library 是标准么?在很多操作系统环境下都通用,那是怎么通用的?
答:“通用”的说法是在C++标准下源代码的通用。也就是说,同样一个程序源码(不含个体独有的系统调用和函数),在不同操作系统下的编译器里编译出来的可执行程序,能够在各自的操作系统环境下运行,
而不是说同样的可执行程序在不同的操作系统环境下直接运行。 再说WIN和UNIX,LINUX的可执行PE文件格式也不一样。
问:那么我在WIN的编译器上可以编译出在UNIX系统里也能执行的程序么?
答: 我觉得不能,不确定。
问:CRT在程序运行中起到什么作用? 看MSDN里说 CRT负责给STATIC和non-local变量执行初始化操作和析构操作。 这些操作不是应该由编译器在编译的时候用添加初始化代码和析构代码来实现么?
是不是可以认为编译器在编译的时候,调用了CRT里的冬冬来调用static和non-local变量的构造和析构函数?
答:不知道。 |
|