Nombres de definiciones de macros en diferentes sistemas y arquitecturas

prefacio

  • Cuando el código C/C++ implementa la compilación multiplataforma, básicamente llamará a las funciones del sistema. En este momento, las definiciones de macro en diferentes sistemas se pueden usar para lograr la compilación multiplataforma. El sistema se divide principalmente en Windows, Linux y Mac. La arquitectura se refiere principalmente a la arquitectura bajo Linux, y las más utilizadas son las arquitecturas x86, arm y mips.

Definición de macros del sistema de Windows

  • La CPU de la plataforma Windows está dividida en dos por Intel y AMD , ambas son arquitectura x86
  • La definición macro del sistema de ventanas es_WIN32

Definición de macros del sistema Linux

  • La definición macro del sistema Linux es__linux__
  • Según la arquitectura, el sistema Linux se divide en arquitectura x86, arquitectura arm y arquitectura mips.
    • Los chips de arquitectura x86 son principalmente Intel y AMD Los sistemas ubuntu y centos que instalamos en la máquina virtual de Windows pertenecen a la arquitectura x86. Los chips domésticos con arquitectura x86 son principalmente Zhaoxin
    • La macro de arquitectura x86 de 64 bits se define como__x86_64__
    • La macro de arquitectura x86 de 32 bits se define como__i386__
    • Los chips de arquitectura Arm incluyen principalmente Feiteng y Kunpeng
    • La macro de arquitectura arm se define como__brazo__
    • Los chips de arquitectura MIPS incluyen principalmente Godson
    • La macro de arquitectura mips se define como__mips__
  • Al codificar, en términos generales, no es necesario distinguir la arquitectura detallada en el sistema Linux, y la API del sistema es básicamente universal, a menos que haya necesidades especiales y la arquitectura deba distinguirse.

Definición de macros del sistema Mac

  • La definición macro del sistema mac es__MANZANA__
  • Los chips utilizados en el sistema mac incluyen Intel, M1 y M2, pero debido a que el sistema Mac es muy compatible con diferentes chips, no necesita prestar atención al chip y la arquitectura del sistema mac al codificar. Usar directamente__MANZANA__Eso es todo.

Implementación de codificación

  • Las diferentes plataformas y arquitecturas se pueden distinguir por las siguientes definiciones de macro
  •   #ifdef _WIN32	
      		//windows系统
      #elif __linux__
      		#ifdef __x86_64__
      			//linux系统的x86架构64位
      		#elif __i386__
      			//linux系统的x86架构32位
      		#elif __arm__
      			//linux系统的arm架构	
      		#elif __mips__
      			//linux系统的mips架构
      		#endif
      #elif __APPLE__
      		//苹果系统
      #else
      		//其他系统
      #endif
    
  • La definición de macro utilizada anteriormente no se puede utilizar ni sintaxis, por lo que existe la siguiente forma de escribir
  •   #if defined _WIN32
      	//windows系统
      #elif defined __linux__
      	#if defined(__x86_64__) || defined(__i386__)
      		//linux系统的x86架构64位或32位
      	#elif defined __arm__
      		//linux系统的arm架构	
      	#elif defined __mips__
      		//linux系统的mips架构
      	#endif
      #elif defined __APPLE__ 
      	//其他系统
      #else
      	//其他系统
      #endif
    

Supongo que te gusta

Origin blog.csdn.net/new9232/article/details/131946792
Recomendado
Clasificación