Цитата(Golikov A. @ Jan 21 2014, 22:26)

напишите
Код
long i;
printf("%i", i);
и получите варнинг
да, есть варнинг
Цитата(Golikov A. @ Jan 21 2014, 22:26)

кстати а есть вариант в этой библиотеке
Код
printf("%l",i)
?
скорее всего он не будет давать варнинга
в таком варианте сразу два предупреждения
Код
warning: conversion lacks type at end of format [-Wformat=]
warning: too many arguments for format [-Wformat-extra-args]
повторюсь, почему я создал тему: раньше пользовался кейлом, и там
Код
typedef unsigned int uint32_t;
и никаких возражений на счет printf("%i\n",i); у компилятора не возникало
сейчас перешел на бесплатный компилятор, в котором
Код
typedef unsigned long uint32_t;
+ варнинг.
это то меня и смутило. причем в кейле определение uint32_t статично, а в бесплатном компиляторе определение зависит от дифайна #if __have_long32 который в свою очередь зависит от #elif __STDINT_EXP(LONG_MAX) == 0x7fffffff && !defined(__SPU__) и тд
я подумал, может компилятору ключей каких то нехватает, что бы uint32_t определился как в кейле, для этого должно выполниться условия препроцессора
Код
#elif __STDINT_EXP(INT_MAX) == 0x7fffffffL
typedef signed int int32_t;
typedef unsigned int uint32_t;
Цитата(scifi @ Jan 21 2014, 23:26)

Вы будете смеяться, но warning таки от компилятора :-)
спасибо кэп

на запись printf("%" PRIu32 "\n",i);
Код
../Sources/main.c:45:14: error: expected ')' before 'PRIu32'
printf("%" PRIu32 "\n",i);
^
../Sources/main.c:45:14: warning: spurious trailing '%' in format [-Wformat=]