» Poradna » Programy

Ako nastavit kompilator gcc?

 | Microsoft Windows 8.1 IE 11.0

Aky parameter potrebujem dat kompilatoru gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC) aby strukturu definovaneho typu neprevadzal do 64bit velkosti pre kazdu hodnotu?kompilator je defaultne nastaveny takto:[mysiak@f23 Struktury]# gcc -vUsing built-in specs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/5.3.1/lto-wrapperTarget: x86_64-redhat-linuxConfigured with: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linuxThread model: posixStrukturu mam vytvorenu takto:typedef struct _RT_802_11_LINK_STATUS { unsigned char Status; unsigned long RxPER; unsigned long TxPER; unsigned long CurrRxRate; unsigned long CurrTxRate; unsigned long ChannelQuality; unsigned long TxByteCount; unsigned long RxByteCount; unsigned long CentralChannel;} RT_802_11_LINK_STATUS, *PRT_802_11_LINK_STATUS;Na 32bit architekture je dlka struktury RT_802_11_LINK_STATUS 33 bytovNa 64bit architekture je dlka struktury RT_802_11_LINK_STATUS 72 bytova potrebujem aby aj na 64bit arch.mala struktura 33 bytov.

Mohlo by vás také zajímat

Odpovědi na otázku

 |   |  Linux AppleMAC-Safari 5.0

Skus to kompilovat s prepinacom -m32

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 8.1 IE 11.0

Tento prepinac neprerobi nahodou aj pointre na 32bitov?Mozno som prisiel na to preco je to rozdielne.dlzka typu "unsigned long" je 8 bytov pre 64bit arch.dlzka typu "unsigned long" su 4 byty pre 32bit arch.Mam z toho divny pocit, pretoze typ "unsigned long long" je na obidvoch architekturach 8 bytov.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux AppleMAC-Safari 5.0

To mas jedno, proste to vyskusaj a nefilozofuj:D hej aj pointre asi budu 32b. Tiez mozes vyskusat prepinac -march=i386

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux AppleMAC-Safari 5.0

Alebo ak chces len vzdy standardne integery tak mozes skusit inkludnut stdint.h a potom 4B unsigned long typ deklarujes ako uint32_t

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Red Hat, Threads, Enable, Long, RedHat, POSIX, Linker, Share, Disable, Bootstrap, Languages, Arch, Fortran, Built