Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die CPU-Architektur bestimmen, für die mein C/C-Code kompiliert wird?

Wie kann ich die CPU-Architektur bestimmen, für die mein C/C-Code kompiliert wird?

DDD
DDDOriginal
2024-11-08 04:18:02930Durchsuche

How can I determine the CPU architecture for which my C/C   code is being compiled?

Kompilieren für eine bestimmte CPU-Architektur

Beim Schreiben von C- oder C-Code ist es oft notwendig, die Ziel-CPU-Architektur zu kennen, für die Sie sich entscheiden kompilieren. Diese Informationen können nützlich sein, um die Codeleistung zu optimieren oder die Kompatibilität mit bestimmter Hardware sicherzustellen. Verschiedene Compiler verwenden verschiedene nicht standardmäßige Präprozessordefinitionen, um CPU-Architekturen zu unterscheiden (z. B. _M_X86 in MSVS, i386__ und __arm in GCC).

Standarderkennungsmethoden

Leider gibt es keinen universellen Standard für die Erkennung der CPU-Architektur zur Kompilierungszeit. Die folgende externe Funktion kann jedoch die Architektur für eine Vielzahl von Compilern erkennen:

extern "C" {
    const char *getBuild() { 
        #if defined(__x86_64__) || defined(_M_X64)
        return "x86_64";
        #elif defined(i386) || defined(__i386__) || defined(__i386) || defined(_M_IX86)
        return "x86_32";
        #elif defined(__ARM_ARCH_2__)
        return "ARM2";
        #elif defined(__ARM_ARCH_3__) || defined(__ARM_ARCH_3M__)
        return "ARM3";
        #elif defined(__ARM_ARCH_4T__) || defined(__TARGET_ARM_4T)
        return "ARM4T";
        #elif defined(__ARM_ARCH_5_) || defined(__ARM_ARCH_5E_)
        return "ARM5"
        #elif defined(__ARM_ARCH_6T2_) || defined(__ARM_ARCH_6T2_)
        return "ARM6T2";
        #elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)
        return "ARM6";
        #elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__)
        return "ARM7";
        #elif defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__)
        return "ARM7A";
        #elif defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__)
        return "ARM7R";
        #elif defined(__ARM_ARCH_7M__)
        return "ARM7M";
        #elif defined(__ARM_ARCH_7S__)
        return "ARM7S";
        #elif defined(__aarch64__) || defined(_M_ARM64)
        return "ARM64";
        #elif defined(mips) || defined(__mips__) || defined(__mips)
        return "MIPS";
        #elif defined(__sh__)
        return "SUPERH";
        #elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC)
        return "POWERPC";
        #elif defined(__PPC64__) || defined(__ppc64__) || defined(_ARCH_PPC64)
        return "POWERPC64";
        #elif defined(__sparc__) || defined(__sparc)
        return "SPARC";
        #elif defined(__m68k__)
        return "M68K";
        #else
        return "UNKNOWN";
        #endif
    }
}

Das obige ist der detaillierte Inhalt vonWie kann ich die CPU-Architektur bestimmen, für die mein C/C-Code kompiliert wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn