_fsopen для C в Borland C ++ BuilderX 2003 и MVS2008 - PullRequest
0 голосов
/ 07 апреля 2010

с MVS2008, эта строка отлично работает:

_fsopen(file_name, "wb+", _SH_DENYRW);

Borland C ++ builderX 2003 года жалуется на аргумент _SH_DENYRW. Я изменил на

_fsopen(file_name, "wb+", SH_DENYRW);

удаление подчеркивания и Borland теперь хорошо компилируются. Это хорошо, что я делаю? Я видел эту модификацию где-то в Интернете.

Большое спасибо ..

1 Ответ

0 голосов
/ 07 апреля 2010

Microsoft постепенно работает над тем, чтобы сделать имена, используемые в их заголовках и библиотеках C / C ++, более совместимыми со стандартами (хотя они не обязательно делают то же самое для имен в заголовках и библиотеках SDK - тонко, но важное различие). Таким образом, вы обнаружите, что все больше и больше имен, которых нет в стандарте, имеют префикс подчеркивания.

Но MS часто предоставляет возможность использовать старые, не соответствующие стандартам имена для обратной совместимости. Вы должны иметь возможность использовать имя SH_DENYRW в MSVC или Borland, если только вы не указываете компилятору использовать строгое соответствие стандартам (например, с опцией /Za), поскольку MSVC определяет следующее в share.h:

#if     !__STDC__
/* Non-ANSI names for compatibility */
#define SH_DENYRW _SH_DENYRW
#define SH_DENYWR _SH_DENYWR
#define SH_DENYRD _SH_DENYRD
#define SH_DENYNO _SH_DENYNO
#endif

#endif  /* _INC_SHARE */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...