Формат "% ld" ожидает тип "long int", но аргумент 3 имеет тип "TEST" - PullRequest
0 голосов
/ 21 июня 2011

Здесь TEST - структурный указатель. Структура содержит целое число. Что может быть правильным фактором для этого? Структура TEST выглядит следующим образом. Я использую gcc в качестве компилятора.

     typedef struct TEST_HELP{
                 int value;                
      } *TEST, TEST_NODE;

1 Ответ

5 голосов
/ 21 июня 2011

Полагаю, у вас есть что-то вроде:

TEST ptr;
// set ptr to something
ptr->value = 5;
printf( "%ld", ptr ); // expect 5 to be printed

Это не будет работать, потому что printf не знает, как напечатать структуру TEST_HELP. Вам необходимо распечатать данные внутри него:

TEST ptr;
// set ptr to something
ptr->value = 5;
printf( "%ld", (long)ptr->value ); // expect 5 to be printed

Вы должны использовать %d для значений int. %ld для long значений, следовательно, приведение.

...