|
Несовместимость "C"-кода с windows.h |
|
24.01.2004, 15:52
|
#1
|
Академик
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
|
Несовместимость "C"-кода с windows.h
вопрос воттакенный: есть в код, в котором есть:
enum insts
{ ..., IN, OUT, ... }
при подключении "windows.h" компилер, естессно, ругаитца.
как обойти ?
namespace-ы вроде (?) не помогут..
P.S. менять define-ы низя.
|
|
|
24.01.2004, 19:10
|
#2
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
1. namespace-ы помогут, но это уже не будет c код.
2. можешь объявить енум в структуре или в классе, ни как понимаешь это тоже не сцы код.
3....
|
|
|
25.01.2004, 08:27
|
#3
|
Академик
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
|
Quote:
Originally Posted by Agregat
1. namespace-ы помогут, но это уже не будет c код.
2. можешь объявить енум в структуре или в классе, ни как понимаешь это тоже не сцы код.
3....
|
Agregat: я ж сказал: менять структуры низя, тока код, их обрабатывающий.
И исчо: советуемый код - в студию, плиз.
|
|
|
25.01.2004, 09:33
|
#4
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
А какую ошибку дает компилятор?
Могу предложить следующий вариант, но я не знаю будет ли он работать.
Попробовать стоит
PHP Code:
... your code
namespace WinNamespace
{
#include <windows.h>
}
... again your code
DWORD dwRet = WinNamespace::WaitForSingleObject(hThread, INFINITE);
|
|
|
25.01.2004, 10:34
|
#5
|
Академик
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
|
а константы-переменые?
DWORD, hThread, INFINITE
Не, не пойдет, батенька.
|
|
|
25.01.2004, 10:41
|
#6
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
Quote:
Originally Posted by Greco El
а константы-переменые?
DWORD, hThread, INFINITE
Не, не пойдет, батенька.
|
Господин Казарян, думайте немного сами:
WinNamespace: WORD;
WinNamespace::HANDLE;
WinNamespace::INFINITE;
Кода больше проблем меньше. Я уже попробовал, все работает.
|
|
|
25.01.2004, 10:44
|
#7
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
Кстати в цпп файлах, где такой проблемы нет можно написать
using namespace WinNamespace;
и тогда эти префиксы не понадобятся.
|
|
|
25.01.2004, 12:02
|
#8
|
Академик
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
|
WORD
класный тип данных. Веселый.
спасибо за базар, Агрегат!
|
|
|
|
а вот и правильный ответ |
|
25.01.2004, 12:18
|
#9
|
Академик
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
|
а вот и правильный ответ
а вот и правильный ответ на мой вопрос.
(проверку правильности кое-кто может выполнить как домашнее задание )
Code:
#ifdef __cplusplus
extern "C" {
#endif
#include <windows.h>
...
void UtilizeWindowsFunctions()
{
SetConsoleTextAttribute ( GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED |
FOREGROUND_GREEN |
FOREGROUND_BLUE );
}
...
#ifdef __cplusplus
}
#endif
не нужно никаких C++, никаких namespace-ов. Классика.
|
|
|
25.01.2004, 12:31
|
#10
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
Базара не было, но пожалуйста.
|
|
|
25.01.2004, 12:32
|
#11
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
Если у тебя в программе много сотен вызовов разных АПИ напишешь много сотен разных wrappero-v? Иль каждый раз будешь ставить этот блок?
|
|
|
25.01.2004, 12:37
|
#12
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
Еще меня интересует один вопрос. Почему не компилится оригинальное приложение?
|
|
|
25.01.2004, 15:13
|
#13
|
Академик
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
|
Quote:
Originally Posted by Agregat
Если у тебя в программе много сотен вызовов разных АПИ напишешь много сотен разных wrappero-v? Иль каждый раз будешь ставить этот блок?
|
ты невнимателен: wrapper ставится не на вызовы, а на код этих "windows-dependable"-функций.
Вызываешь функции без каких-либо "оберток".
|
|
|
25.01.2004, 19:32
|
#14
|
ЙЦУКЕН
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 54
Posts: 3,118
Rep Power: 0
|
покоцать windows.h тебе что не позволяет?
моральноэтические принципы или еще чего ?
замени ты этот IN,OUT,хез на MY_IN,MY_OUT,MY_хез и не мучайся....
|
|
|
25.01.2004, 19:35
|
#15
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
Гаспар - у меня вообще все легко компилится... Я так и не понял, что у господина Казаряна было не то...
|
|
|
All times are GMT. The time now is 02:36. |
|
|