Visual c++ C+的特点是什么+;与Visual Studio以外的编译器不兼容? 我被告知避免使用C++的特性,因为这样会很难将代码移植到其他编译器。 < P>我给出的例子是使用·IFIFF < /> >代替我的头文件中的·*语用>曾经/< > >,这是很有挑战性的回答,因为每个编译器都是不同的,更具体地说,“语法”语句不是C++的一个特性。pragma的定义是“发送给编译器的命令”:

Visual c++ C+的特点是什么+;与Visual Studio以外的编译器不兼容? 我被告知避免使用C++的特性,因为这样会很难将代码移植到其他编译器。 < P>我给出的例子是使用·IFIFF < /> >代替我的头文件中的·*语用>曾经/< > >,这是很有挑战性的回答,因为每个编译器都是不同的,更具体地说,“语法”语句不是C++的一个特性。pragma的定义是“发送给编译器的命令”:,visual-c++,language-features,portability,Visual C++,Language Features,Portability,pragma根据定义是特定于机器或操作系统的,对于每个编译器来说通常是不同的 P> >本质上,每当你看到“语用”时,它意味着“接下来的内容不是语言标准的一部分,所以对于你在//P>>P>的每一个平台来说可能都是不同的,这是很有挑战性的,因为每个编译器都是不同的,更具体地说,语法语句不是C++的一个特征。pragma的定义是“发送给编译器的命令”: pragma根据定义是特定于机器或操作系统的,对于每个编译器来说通常是不同的 因此,本质上,每当你看到“pragma”时,它的意思是“接下来的内容不

pragma根据定义是特定于机器或操作系统的,对于每个编译器来说通常是不同的


<> P> >本质上,每当你看到“语用”时,它意味着“接下来的内容不是语言标准的一部分,所以对于你在//P>>P>的每一个平台来说可能都是不同的,这是很有挑战性的,因为每个编译器都是不同的,更具体地说,语法语句不是C++的一个特征。pragma的定义是“发送给编译器的命令”:

pragma根据定义是特定于机器或操作系统的,对于每个编译器来说通常是不同的


因此,本质上,每当你看到“pragma”时,它的意思是“接下来的内容不是语言标准的一部分,因此对于你目标/编译的每个平台可能都不同”

这里是VC++中的非标准行为列表:

这里是VC++中的非标准行为列表:

这些不是“C++特性”,它们是非标准的编译器开发人员提供的“扩展”、非标准函数和“编译器功能”

在移植过程中会导致问题的microsoft特定功能的简短且不完整的列表:

  • pragma一次(以及几乎每个pragma)将被另一个编译器忽略,这将导致多个头包含。可能会造成麻烦
  • __int32和类似类型(特定于microsoft)
  • 来自windows.h-DWORD/WORD/HANDLE/TCHAR的所有内容。还有特定于操作系统的API和系统调用。这包括WinMain()
  • 每个内置类型、宏和关键字都以两个下划线(函数、int32、declspec等)开头
  • *printf函数的某些版本-swprintf、vswprintf等。某些格式(%S)规范在不同的编译器上表现不同
  • *_s功能(strcpy_s等)
  • 这些不是“C++特性”,而是编译器开发人员提供的非标准“扩展”、非标准函数和“编译器特性”

    在移植过程中会导致问题的microsoft特定功能的简短且不完整的列表:

  • pragma一次(以及几乎每个pragma)将被另一个编译器忽略,这将导致多个头包含。可能会造成麻烦
  • __int32和类似类型(特定于microsoft)
  • 来自windows.h-DWORD/WORD/HANDLE/TCHAR的所有内容。还有特定于操作系统的API和系统调用。这包括WinMain()
  • 每个内置类型、宏和关键字都以两个下划线(函数、int32、declspec等)开头
  • *printf函数的某些版本-swprintf、vswprintf等。某些格式(%S)规范在不同的编译器上表现不同
  • *_s功能(strcpy_s等)

  • 非常干净但不可移植的in语句:

    非常干净但不可移植的in语句:

    您知道要针对哪些其他编译器吗?要在哪些平台上运行?(32位对64位?Unix/Linux对Windows?)您知道要针对哪些其他编译器吗?要在哪些平台上运行吗?(32位vs 64位?Unix/Linux vs Windows?)