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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
#1

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

23.08.2014, 04:55. Просмотров 936. Ответов 45
Метки нет (Все метки)

Можно ли данный пример переделать, только чтоб в макрос входила строка, т.е. так: 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     Поиск макроса, принимающего строку как параметр
Посмотрите здесь:

Принять в параметр функции строку и вернуть ее же,но измененную - C++
Здравствуйте!Такая проблема:есть функция,принимающая в качестве аргумента строку и,проведя некоторые действия с ней,возвращает ее же,но...

Написать функцию atoi(), которая принимает параметр - строку цифр и возвращает соответствующее ей целое - C++
Это оказалось мне не по-силам, поэтому прошу помощи,господа:) Напишите функцию atoi(), которая имеет параметр - строку цифр и...

Как вернуть значение из макроса? - C++
Как сделать стобы из макроса возвращалось значение? #include &quot;stdio.h&quot; int main(void) { #define mac(a,b)\ for (int...

Как добавить запятую в аргументы макроса? - C++
есть макрос который должен принимать строку в которой есть запятые как это сделать? void some_fun(const char * arg_1, unsigned int...

Как отменить действие макроса UNICODE? - C++
#undef UNICODE не работает. Но всё по порядку. Друзья! Недавно качнул один из компиляторов компилятор gcc, вот начинаю работать. ...

Как передать элемент структуры, как параметр функции - C++
Помогите, пожалуйста. Есть структура, необходимо создать функцию сортировки, но при этом, чтобы можно было передавать элемент структуры,...

C++ как правильно передавать функцию как параметр? - C++
Всем првет! Я кодю на OpenGL и сделал клас Game у меня в етом класе есть функция DrawGLScene(); как мне передать ее в ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex5
1040 / 703 / 102
Регистрация: 12.04.2010
Сообщений: 1,768
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
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
23.08.2014, 16:45  [ТС]     Поиск макроса, принимающего строку как параметр #42
Alex5, так а вытащить его (этот файл-хедер winuser.h) из библиотеки user32.lib/dll можно? Т.е. имею ввиду что на компах где нет C++, там и нет хедеров, только дллки в system32.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 762
23.08.2014, 17:00     Поиск макроса, принимающего строку как параметр #43
Izual, названия макросов вам из скомпилированного файла никак не вытащить, это сродни вытащить оттуда комментарии разработчиков. Поищите в сети заголовочные файлы, наверняка там они отдельно есть.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
23.08.2014, 17:04  [ТС]     Поиск макроса, принимающего строку как параметр #44
КОП, да у меня то есть все хедеры, и в составе VS и в MinGw, только предложенный вариант предпологает тоскать с собой все эти хедеры вместе с откомпилированным exe файлом программы которую делаю.
Поясню, я хочу вытащить не названия макросов, а весь файл .h если это возможно вообще.
Alex5
1040 / 703 / 102
Регистрация: 12.04.2010
Сообщений: 1,768
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++
Нужна помощь.... Проблема такая: есть функция которая рисует график математической функции ранее обьявленной, например: float f(float...

Матрица как параметр - C++
Не могу разобраться с передачей многомерных массивов в качестве параметра функции. Объясните пожалуйста на пальцах: #include &lt;iostream&gt; ...

Как передать параметр? - C++
Вопрос как сделать так чтобы в методе класса в качестве параметра передавать указатель на этот класс? Например: class A { A() {}; ...

Как передать параметр в функцию? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; void test(int); int main() { int n = 1; for (int i = 0; i &lt;...

Анонимные функции, как параметр - C++
Здравствуйте. Есть проблема - много функций, каждой придумывать имена не хочу, тем более, что они мне не пригодятся. Суть такова: void...


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

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

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru