Боюсь, я уже знаю ответ на этот вопрос, но я хотел бы быть уверен ...
У меня довольно большой проект с файлом заголовка, который typedefs native native:
typedef unsigned long int u32;
typedef signed long int s32;
// etc...
Произошло неизбежное, и сейчас я пытаюсь скомпилировать в системе, где long
- это 64-битная версия вместо 32-й. Как лучше всего исправить это?
Я мог бы typedef
выше с int
(или int32_t
/ uint32_t
из stdint.h), который бы удовлетворял 32-битному размеру на платформах, о которых я знаю, но это все еще кажется сомнительным.Существует также проблема с функциями стиля printf
, где использовался %ld
(компилятор жалуется и хотел бы вместо этого видеть %d
).Все они должны быть изменены, не так ли (возможно, с определениями в inttypes.h)?
Это кажется простым, но я хотел бы быть уверен, прежде чем начать копаться в нем (исправляя формат printf
)струны кажутся пугающими).