第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用預(yù)處理器指令檢查OS?

如何使用預(yù)處理器指令檢查OS?

C
元芳怎么了 2019-07-26 15:14:21
如何使用預(yù)處理器指令檢查OS?我需要我的代碼根據(jù)編譯它的操作系統(tǒng)來做不同的事情。我在找這樣的東西:#ifdef OSisWindows// do Windows-specific stuff#else// do Unix-specific stuff#endif有辦法嗎?有更好的方法來做同樣的事情嗎?
查看完整描述

3 回答

?
猛跑小豬

TA貢獻(xiàn)1858條經(jīng)驗 獲得超8個贊

這個操作系統(tǒng)的預(yù)定義宏站點有一個非常完整的檢查列表。下面是其中的一些,并提供了找到它們的鏈接:

_WIN3232位和64位
_WIN6464位

Unix(Linux,*BSD,MacOSX)

看這個相關(guān)問題在使用這張支票的一些缺陷上。

unix
__unix
__unix__

MacOSX

__APPLE__
__MACH__

兩者都已定義;檢查兩者都應(yīng)該有效。

linux

__linux__
linux過時(不符合POSIX標(biāo)準(zhǔn))
__linux過時(不符合POSIX標(biāo)準(zhǔn))

FreeBSD

__FreeBSD__




查看完整回答
反對 回復(fù) 2019-07-27
?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗 獲得超5個贊

GCC在Windows上定義:

gcc -dM -E - <NUL:

在Linux上:

gcc -dM -E - </dev/null

MinGW中預(yù)定義的宏:

WIN32 _WIN32 __WIN32 __WIN32__ __MINGW32__ WINNT __WINNT __WINNT__ _X86_ i386 __i386

關(guān)于統(tǒng)一:

unix __unix__ __unix




查看完整回答
反對 回復(fù) 2019-07-27
?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗 獲得超10個贊

基于nadeausofware朗達(dá)仙女的回答.

#include <stdio.h>/**
 * Determination a platform of an operation system
 * Fully supported supported only GNU GCC/G++, partially on Clang/LLVM
 */#if defined(_WIN32)
    #define PLATFORM_NAME "windows" // Windows#elif defined(_WIN64)
    #define PLATFORM_NAME "windows" // Windows#elif defined(__CYGWIN__) && !defined(_WIN32)
    #define PLATFORM_NAME "windows" // Windows (Cygwin POSIX under Microsoft Window)#elif defined(__ANDROID__)
    #define PLATFORM_NAME "android" // Android (implies Linux, so it must come first)#elif defined(__linux__)
    #define PLATFORM_NAME "linux" // Debian, Ubuntu, Gentoo, Fedora, openSUSE, RedHat, Centos and other#elif defined(__unix__) || defined(__APPLE__) && defined(__MACH__)
    #include <sys/param.h>
    #if defined(BSD)
        #define PLATFORM_NAME "bsd" // FreeBSD, NetBSD, OpenBSD, DragonFly BSD
    #endif#elif defined(__hpux)
    #define PLATFORM_NAME "hp-ux" // HP-UX#elif defined(_AIX)
    #define PLATFORM_NAME "aix" // IBM AIX#elif defined(__APPLE__) && defined(__MACH__) // Apple OSX and iOS (Darwin)
    #include <TargetConditionals.h>
    #if TARGET_IPHONE_SIMULATOR == 1
        #define PLATFORM_NAME "ios" // Apple iOS
    #elif TARGET_OS_IPHONE == 1
        #define PLATFORM_NAME "ios" // Apple iOS
    #elif TARGET_OS_MAC == 1
        #define PLATFORM_NAME "osx" // Apple OSX
    #endif#elif defined(__sun) && defined(__SVR4)
    #define PLATFORM_NAME "solaris" // Oracle Solaris, Open Indiana#else
    #define PLATFORM_NAME NULL#endif// Return a name of platform, if determined, otherwise - an empty stringchar *get_platform_name() {
    return (PLATFORM_NAME == NULL) ? "" : PLATFORM_NAME;}int main(int argc, char *argv[]) {
    puts(get_platform_name());
    return 0;}

用GCC和Clang測試:

  • Debian 8
  • 窗戶(MinGW)
  • 窗口(Cygwin)




查看完整回答
反對 回復(fù) 2019-07-27
  • 3 回答
  • 0 關(guān)注
  • 465 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號