powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / #if и ошибка
5 сообщений из 5, страница 1 из 1
#if и ошибка
    #33859468
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
#if sizeof(TCardRecordMashPomOwner) !=  108 
   #error Размер TCardRecordMashPomOwner должен быть равен  108  байт
#endif

#if sizeof( TCardRecord ) >  900 
   #error Размер TCardRecord превысил  900  байт
#endif

На C++ Builder 6 "это" работало нормально. На Visual Studio 2005 "это" выдаёт ошибку "fatal error C1017: invalid integer constant expression". Как написать это же по другому тут чтобы работало?
...
Рейтинг: 0 / 0
#if и ошибка
    #33860003
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По всей видимости sizeof является предопределенным макросом препроцессора борланда. В вижуал с, он по всей видимости отстутсвует, так как он не определен стандартом С++.
А функциями препроцессор оперировать не может.

тынц
...
Рейтинг: 0 / 0
#if и ошибка
    #33860010
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. не функциями, а операторами С++
...
Рейтинг: 0 / 0
#if и ошибка
    #33860023
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msdnThe constant-expression is an integer constant expression with these additional restrictions:

Expressions must have integral type and can include only integer constants, character constants, and the defined operator.

The expression cannot use sizeof or a type-cast operator.

The target environment may not be able to represent all ranges of integers.

The translation represents type int the same as type long, and unsigned int the same as unsigned long.

The translator can translate character constants to a set of code values different from the set for the target environment. To determine the properties of the target environment, check values of macros from LIMITS.H in an application built for the target environment.

The expression must not perform any environmental inquiries and must remain insulated from implementation details on the target computer.
...
Рейтинг: 0 / 0
#if и ошибка
    #33860204
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, спасибо, получается что тут "это" никак... Придётся в runtime...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / #if и ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]