Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[c++] как реализован макрос __counter__ ? 16.01.03 13:04
Автор: Green Статус: Незарегистрированный пользователь
|
В VC7.0 есть макрос_COUNTER_
Во всяком случае так сказано в MSDN.
Под рукой нет VC7.0, работаю в VC6.0, а макрос нужен.
Подскажите, как реализован этот макрос. Если можно, то прямо кусок его кода.
Или же подскажите, как др. образом генерить уникальные имена при предкомпиляции?
|
 |
[C++] Может удастся использовать __LINE__ ? 16.01.03 19:37
Автор: leo <Леонид Юрьев> Статус: Elderman
|
_COUNTER_есть в GCC кажеться с 2.7.3, в Microsoft C++ 13.0 (VC 7.0) и в Intel C++ 7.0
Реализован он внутри компилятора, и "эмулировать" по другому не получится.
Может удастся использовать_LINE_?
|
 |  |
[C++] Может удастся использовать __LINE__ ? 16.01.03 19:42
Автор: Green Статус: Незарегистрированный пользователь
|
>_COUNTER_есть в GCC кажеться с 2.7.3, в Microsoft C++
> 13.0 (VC 7.0) и в Intel C++ 7.0 > Реализован он внутри компилятора, и "эмулировать" по > другому не получится. > > Может удастся использовать_LINE_?
Пришлось использовать_LINE_
#define UNIQ2(pref,line) pref##line
#define UNIQ1(pref,line) UNIQ2(pref,line)
#define UNIQ(pref) UNIQ1(pref_LINE_
|
 |
[C++] Скорее всего никак 16.01.03 15:40
Автор: amirul <Serge> Статус: The Elderman
|
> В VC7.0 есть макрос_COUNTER_ > Во всяком случае так сказано в MSDN. > Под рукой нет VC7.0, работаю в VC6.0, а макрос нужен. > Подскажите, как реализован этот макрос. Если можно, то > прямо кусок его кода. > Или же подскажите, как др. образом генерить уникальные > имена при предкомпиляции?
У меня тоже нет VC7 - го. Вот строчка из MSDN-а:
Microsoft-Specific Predefined Macros
Macro Description
__COUNTER__: Expands to an integer starting with 0 and incrementing by 1 every time it is used
---
Короче, это предопределенный макрос (типа_DATE__FILE_и т.д.) и раскрывается самым компилером, а реализовать счетчик стандартными C-шными или C++-нутыми средствами невозможно. Везде, где мне надо было уникальное имя я или использовал комбинацию предопределенных макросов, определенных для этой версии. В частности в большинстве случаев проект можно написать так, чтоб работал макрос_LINE_ Для этого можно все файлы в которых нужно будет раскрытие уникального имени начинать с #line xxx, где xxx отодвигать для каждого проекта на дцать.
Но сам я просто определял макрос с параметром и не ленился передавать уникальный номер вручную
|
|
|