bu makroyu GCC ye nasıl compile ettiririm ?

Başlatan magnetron, 06 Şubat 2019, 20:52:06

magnetron

merhaba forum,

aşağıdaki SENSIRION_WORDS_TO_BYTES makroyu GCC de compile yapınca hata veriyor
( be16_to_cpu worddeki byte ların yerini değiştiriyor onu kabul ediyor )

bunu nasıl compile ederim ?

teşekkür

Kod Seç
...........SCD30.c:540error'for' loop initial declaration used outside C99 mode  
Kod Seç
/**
 * Convert a word-array to a bytes-array, effectively reverting the
 * host-endianness to big-endian
 * @a:  word array to change (must be (u16 *) castable)
 * @w:  number of word-sized elements in the array (SENSIRION_NUM_WORDS(a)).
 */
#define SENSIRION_WORDS_TO_BYTES(a, w) \
    
for (u16 *__a = (u16 *)(a), __e = (w), __w 0__w __e; ++__w) { \
        
__a[__w] = be16_to_cpu(__a[__w]); \
    }

RaMu

Derleyici ayarlarından for içinde değişken tanımlamaya izin vererek
veya
for içindeki değişken ve pointer tanımlamalarını
for dışına alarak deneyebilirsin.
Denemedim ama böyle olacağını tahmin ediyorum.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

MrDarK

for içinde değişken tanımlama c11 standardı ile gcc 'ye entegre oldu. c99'da bu işlemi yapamazsınız. Gcc versiyonunuzu yükseltirseniz muhtemelen düzelecektir.
Picproje Eğitim Gönüllüleri ~ MrDarK

brandice5

for içinde değişken tanımlama C99 da mevcut.
gcc kullanıyorsanız CFLAGS e "-std=c99" parametresini ekleyerek kullanabilirsiniz.