2009-03-15 5 views
2

This page on the MSDN, похоже, содержит список операций с файлами, которые ведут себя более или менее точно так же, как сжатые версии трех функций, используемых в this example. Какова цель этих нестандартных функций времени выполнения, выполняющих функции, написанные в Win32 API?Что такое функция в библиотеке времени выполнения Microsoft C?

Есть ли они там для совместимости с DOS? Если это так, то почему они получают обновления с помощью 64-битной поддержки?

ответ

2

Функции C Runtime также будут делать такие вещи, как set errno при сбое, что является другим механизмом ошибок, чем Win32.

Код также живет в отдельных библиотеках DLL, в свое время люди на самом деле пытались писать программы, которые не использовали CRT, потому что они не хотели загружать другую DLL.

1

Это называется «история» - когда вы делаете что-то вроде Windows, вам не разрешается бросать старые функции, потому что это нарушает существующие программы.

Один из них похож на функции «C», один выглядит как «Win32». Вы можете использовать то, что вам больше нравится.

3

Если у вас есть код, который вы импортируете из 16-битных ОС Windows, которые называются _findfirst и _findnext, это нормально, чтобы использовать их. В противном случае используйте API-интерфейсы .

Если вы смотрите в C времени выполнения исходного кода (который включен с VC++), вы увидите, что _findfirst называет FindFirstFile, и так далее.

Source

Пожалуйста, проверьте график на this site, а также для сравнения производительности. Вариант FindFirstFile для Win32 API более эффективен. Предупреждение: сам сайт не на английском, но график имеет смысл.

3

Возможно, ключевая вещь, которую вы преодолеваете, используя необработанные API-интерфейсы Win32 (возможно, единственное) - это то, что в сборке отладки CRT выполнит некоторую проверку для вас (посмотрите на источник - существует немало валидаций утверждения, брошенные там).

И что не так с упаковкой API OS - даже если только очень немного?