Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 告诉如果C++;代码是可移植的_C++_Visual Studio_Cross Platform_Portability - Fatal编程技术网

C++ 告诉如果C++;代码是可移植的

C++ 告诉如果C++;代码是可移植的,c++,visual-studio,cross-platform,portability,C++,Visual Studio,Cross Platform,Portability,我正在尝试编写可以用任何现代版本的g++编译的代码,但遇到了一些困难。我使用visualstudios编写了代码,它工作得很好,但我尝试在另一台计算机上编译它,结果出现了问题 一个问题是它无法识别宏EXIT\u SUCCESS。我知道它是在cstdlib中定义的,但是为什么在VS中我不需要导入那个库呢 同样在一个.h文件中,我有const private int PI=3.1416,而在另一台计算机上,它不喜欢这样 那么你怎么知道什么是便携式的呢?我认为C(因此本质上就是C++)是被发明出来可以

我正在尝试编写可以用任何现代版本的g++编译的代码,但遇到了一些困难。我使用visualstudios编写了代码,它工作得很好,但我尝试在另一台计算机上编译它,结果出现了问题

一个问题是它无法识别宏
EXIT\u SUCCESS
。我知道它是在
cstdlib
中定义的,但是为什么在VS中我不需要导入那个库呢

同样在一个.h文件中,我有
const private int PI=3.1416
,而在另一台计算机上,它不喜欢这样

那么你怎么知道什么是便携式的呢?我认为C(因此本质上就是C++)是被发明出来可以在任何地方编译的。我问了一个问题,但认为它被误解了,是否必须对IDE进行某些设置以确保可移植性


编辑:如果我知道为什么在Visual Studio中编译代码时没有
包含
,以及如何关闭此功能,我可能会更好地理解它。

实际上,判断代码是否可移植的唯一方法是在所有目标编译器/平台下编译它。您可以尝试遵守C++标准,但现实很苛刻,没有100%个兼容编译器。即使是简单的程序也能给其他编译器带来惊喜。

1)学习C和C++之间的区别。2) 了解整数和浮点数之间的差异。3)学习C和C++。4) 写出正确的、符合标准的代码。那么你在可移植性方面就有了一个很好的开端。@KerrekSB-1答案毫无价值……学习C和C++@Celeritas,很好地定义什么是可移植的,什么不是@当你搜索时,它会告诉你。过了一段时间你就会知道这些东西,但是标准库中有这么多的名字(下一个标准中会有新的名字),所以有一个参考来检查这些东西是值得的。@Celeritas:我不知道你为什么说@KerrekSB说的没有价值,你知道吗,
C11标准§7.22/3说
EXIT_SUCCESS
stdlib.h
下,你说学习C是无用的。学习一门语言并不仅仅意味着它的语法,它远不止于此。+1,但它不仅仅意味着要100%遵从。。。可移植性还包括刻意避免依赖于未定义、未指定和实现定义的行为,这些行为恰好在一个系统上“工作”(足够好),但在另一个系统上可能不工作……对于这种特定情况(使用MS编译器作为主编译器),是检查可移植性的好工具