symbol.c: В функции 'symbol_FPrint':
symbol.c:1209: warning: format '%ld' expects type 'long int', but argument 3 has type 'SYMBOL'
symbol.c: In function 'symbol_FPrintOtter':
symbol.c:1236: warning: format '%ld' expects type 'long int', but argument 3 has type 'SYMBOL'
symbol.c:1239: warning: format '%ld' expects type 'long int', but argument 3 has type 'SYMBOL'
symbol.c:1243: warning: format '%ld' expects type 'long int', but argument 3 has type 'SYMBOL'
symbol.c:1266: warning: format '%ld' expects type 'long int', but argument 3 has type 'SYMBOL'
В символе.с
1198 #ifdef CHECK
1199 else {
1200 misc_StartErrorReport();
1201 misc_ErrorReport("\n In symbol_FPrint: Cannot print symbol.\n");
1202 misc_FinishErrorReport();
1203 }
1204 #endif
1205 }
1206 else if (symbol_SignatureExists())
1207 fputs(symbol_Name(Symbol), File);
1208 else
1209 fprintf(File, "%ld", Symbol);
1210 }
И СИМВОЛ определяется как:
typedef size_t SYMBOL
Когда я заменил «%ld» на «%zu», я получил следующее предупреждение:
symbol.c: In function 'symbol_FPrint':
symbol.c:1209: warning: ISO C90 does not support the 'z' printf length modifier
Примечание. Отсюда он был отредактирован 26 марта 2010 г., и была добавлена следующая проблема из-за ее сходства с вышеупомянутой проблемой.
У меня есть следующее утверждение:
printf("\n\t %4d:%4d:%4d:%4d:%4d:%s:%d", Index, S->info, S->weight,
Precedence[Index],S->props,S->name, S->length);
Предупреждение, которое я получаю при компиляции в 64-битной архитектуре:
format ‘%4d’ expects type ‘int’, but argument 5 has type ‘size_t’
вот определения параметра:
NAT props;
typedef unsigned int NAT;
Как я могу избавиться от этого, чтобы я мог компилировать без предупреждения в 32- и 64-битной архитектуре?
Каким может быть ее решение?