Форум программистов, компьютерный форум CyberForum.ru

Поиск макроса, принимающего строку как параметр - C++

Восстановить пароль Регистрация
 
 
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
23.08.2014, 04:55     Поиск макроса, принимающего строку как параметр #1
Можно ли данный пример переделать, только чтоб в макрос входила строка, т.е. так: SHOW_DEFINE("WS_VISIBLE");
Пробовал сам удалять stringizing операторы, но что то не получилось.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char buf[255]="";
#define STR(x) #x
#define SHOW_DEFINE(x) strcmp(STR(x),#x)!=0?strcpy(buf,#x):strcpy(buf,"NOT defined")
int _tmain(int argc, _TCHAR* argv[])
{
    SHOW_DEFINE(WS_VISIBLE);
    cout << buf << endl;
    memset(buf,0,_countof(buf));
    SHOW_DEFINE(WS_VIS);
    cout << buf << endl;
    getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2014, 04:55     Поиск макроса, принимающего строку как параметр
Посмотрите здесь:

Мне надо сделать поиск последнего вхождения подстроки s1 в строку s(с функцией LastPos, не strstr). В этом коде просто вхождение подстроки в строку. C++
C++ Принять в параметр функции строку и вернуть ее же,но измененную
C++ как добавить запятую в аргументы макроса?
появилась загвоздка с функцией. нужно вывести на экран строку, сост. из звездочек. Длина строки-параметр функциииз звезд. длина строки - C++
C++ Как передать элемент структуры, как параметр функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex5
881 / 616 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
23.08.2014, 16:40     Поиск макроса, принимающего строку как параметр #41
Цитата Сообщение от Izual Посмотреть сообщение
Alex5, можно, но это копипаста файла winuser.h
Izual, "прочитать и записать" - я имею в виду

C++
1
2
3
4
5
6
7
8
9
  ifstream f( "winuser_copy.h" ); // чтобы случайно не испортить winuser.h используем его копию 
  while( ... )
  {
      f.getline(...);
      // ... 
      value[i] = ...;
      strcpy( name[i], ... );
  }
  f.close();
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
23.08.2014, 16:45  [ТС]     Поиск макроса, принимающего строку как параметр #42
Alex5, так а вытащить его (этот файл-хедер winuser.h) из библиотеки user32.lib/dll можно? Т.е. имею ввиду что на компах где нет C++, там и нет хедеров, только дллки в system32.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
23.08.2014, 17:00     Поиск макроса, принимающего строку как параметр #43
Izual, названия макросов вам из скомпилированного файла никак не вытащить, это сродни вытащить оттуда комментарии разработчиков. Поищите в сети заголовочные файлы, наверняка там они отдельно есть.
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
23.08.2014, 17:04  [ТС]     Поиск макроса, принимающего строку как параметр #44
КОП, да у меня то есть все хедеры, и в составе VS и в MinGw, только предложенный вариант предпологает тоскать с собой все эти хедеры вместе с откомпилированным exe файлом программы которую делаю.
Поясню, я хочу вытащить не названия макросов, а весь файл .h если это возможно вообще.
Alex5
881 / 616 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
23.08.2014, 17:11     Поиск макроса, принимающего строку как параметр #45
Цитата Сообщение от Izual Посмотреть сообщение
у меня то есть все хедеры
Цитата Сообщение от Alex5 Посмотреть сообщение
while( ... )
{
f.getline(...);
// ...
value[i] = ...;
strcpy( name[i], ... );
}
Теперь можно создать текстовый файл
C++
1
2
3
4
5
6
for( i ... )
{
  напечатаем  левую{  и кавычку 
  напечатаем  name[i] и запятую (и ещё одну кавычку)
  напечатаем  value[i] правую{  и запятую (и для наглядности конец строки)
}
Получим файл
C++
1
2
3
4
{ "WS_OVERLAPPED", 0x00000000L }, 
{ "WS_POPUP", 0x80000000L }, 
{ "WS_CHILD", 0x40000000L }, 
{ "WS_WS_MINIMIZE", 0x20000000L },
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2014, 17:23     Поиск макроса, принимающего строку как параметр
Еще ссылки по теме:

C++ Написать функцию atoi(), которая принимает параметр - строку цифр и возвращает соответствующее ей целое
Как отменить действие макроса UNICODE? C++
Указание текстового файла-источника и принимающего файла в cmd C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
23.08.2014, 17:23     Поиск макроса, принимающего строку как параметр #46
Цитата Сообщение от Izual Посмотреть сообщение
тоскать с собой все эти хедеры вместе с откомпилированным exe файлом
Программы из нескольких файлов - вполне нормально. Почему бы и не потаскать доп папку с ними, если это и будет решением всей проблемы, зачем усложнять. А каждый раз извлекать может еще накладнее оказаться.

Так же есть такой механизм в программировании, отражение, но тут я только что название вам и подскажу. Знаю, что без проблем используется в языках, использующих виртуальные машины. А вот в Си не уверен, есть ли аналог.

Как говорится, на этом мои полномочия всё. Удачи в решении)
Yandex
Объявления
23.08.2014, 17:23     Поиск макроса, принимающего строку как параметр
Ответ Создать тему
Опции темы

Текущее время: 16:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru