Я пытаюсь перенести старый 32-битный код Apple C на 64-битную, и у меня возникает следующая проблема:
Некоторые функции обмениваются структурой StandardFileReply, и имя файла должно быть включено в эти параметры.
Тогда определения были:
struct StandardFileReply {
Boolean sfGood;
Boolean sfReplacing;
OSType sfType;
FSSpec sfFile;
ScriptCode sfScript;
short sfFlags;
Boolean sfIsFolder;
Boolean sfIsVolume;
long sfReserved1;
short sfReserved2;
};
struct FSSpec {
short vRefNum;
long parID;
StrFileName name;
};
typedef struct FSSpec FSSpec;
Так что я мог легко получить доступ к sfr.sfFile.name
По какой-то причине Apple изменила определение FSSpec в 64-битномAPI:
#if __LP64__
struct FSSpec {
UInt8 hidden[70]; // FSSpecs are invalid for 64 bit, but defined in case they appear in shared structs
};
typedef struct FSSpec FSSpec;
Значит ли это, что теперь невозможно получить имя файла, если вы получили StandardFileReply?