![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| leniviy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: 1 Всего: 5 |
Я искал способ решения этого вопроса для C: http://forum.vingrad.ru/forum/topic-355730.html только сгенерить автоматическое имя енуму нельзя. __LINE__ не вариант. Был бы __COUNTER__ в gcc, но почему-то не добавили. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| leniviy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: 1 Всего: 5 |
Значит меня ввели в заблуждение
http://www.pixelbeat.org/programming/gcc/static_assert.html Впрочем, проект, который я сапорчу, собирается на gcc 2.95.3 и переход на новую версию только планируется. Там нет __COUNTER__, а значит надо обойтись без енумов. Но в нём уже есть VLA, значит каст в указатель на массив тоже не подходит. Я не смог придумать, как в таком случае остановить компиляцию, если выражение не константа, но зато можно остановить линковку:
"1==1" - константа, и линкер не ругнется на отсутствие переменной nonexisting. Если вместо "1==1" использовать не константное выражение, то будет ошибка линковки. Добавлено @ 14:33 __COUNTER__ появился в gcc 4.3 Это сообщение отредактировал(а) leniviy - 8.9.2012, 14:34 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |