Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как заставить компилятор использовать GetTickCount, а не GetTickCount64?

88K
19 мая 2014 года
Dumaon
2 / / 19.05.2014
Написал программу. Неявно используется GetTickCount. Программирую под win7.
Нужен код, совместимый с winXP, а компилятор упорно берет GetTickCount64, которая xp не поддерживается конечно же.
Как быть?
10
19 мая 2014 года
Freeman
3.2K / / 06.03.2004
Версия среды какая? Сдается мне, что дело не только в функции, он еще и в заголовок PE-файла требование 6-й версии ОС впишет. Боюсь, что для разработки под XP придется взять версию помладше, где совместимость гарантирована производителем.
8
19 мая 2014 года
mfender
3.5K / / 15.06.2005
Интересно было бы на код взглянуть. А то не понятно как это "неявно используется".
88K
19 мая 2014 года
Dumaon
2 / / 19.05.2014
Цитата: mfender
Интересно было бы на код взглянуть. А то не понятно как это "неявно используется".



Этим я хотел сказать примерно следующее

#include<windows.h>
#include<БиблиотекаВажныхВПроектеФункций.h>
...
void ОченьВажнаяНезаменимаяФункция(){
...
GetTickCount();
...
}
...

А в windows.h, точнее в winbase.h, действительно сказано, что если версия оси выше 6, то использовать при компиляции GetTickCount64(), что мой RAD studio 6 охотно и делает.

Вот можно было бы в коде указать, что ось старше шестой версии, было бы хорошо. Или что-то подобное сделать...

P.S: под важными функциями подразумевается программирование rs-232, а там чтобы выдерживать таймауты между пересылками, чтобы держать нужную скорость хочешь не хочешь, а GetTickCount вызывается.

8
20 мая 2014 года
mfender
3.5K / / 15.06.2005
Ничего не понял. Как может работать GetTickCount64, если латинскими буквами написано GetTickCount?
326
20 мая 2014 года
sadovoya
757 / / 19.11.2005
Может это поможет. Для XP видимо надо:

#define WINVER 0x0501
#define _WIN32_WINNT 0x0501

P.S. Но скорее всего эти MS макросы не сработают (хотя может их слизали и в рад). По идее должны быть в среде настройки на целевую платформу...

Цитата:
Ничего не понял. Как может работать GetTickCount64, если латинскими буквами написано GetTickCount?


Но, встречается же, что под, например, MessageBox подразумевается MessageBoxA либо MessageBoxW в зависимости от юникод установок (для анси/юникод вариантных ф-ций API это сплошь и рядом). Городят это тупо через дефайны

#define MessageBox MessageBoxA

Ну, и при условной компиляции нужный дефайн и подставляется.

В случае с GetTickCount по той-же схеме, т.е. вроде такого:
#ifdef версия винды новая
#define GetTickCount GetTickCount64
#endif

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог