Russian Qt Forum
Март 29, 2024, 15:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Разделители разрядов  (Прочитано 6813 раз)
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« : Апрель 21, 2021, 12:23 »

Qt5.15.1, QtC 4.13.2, mingw MINGW 7.3.0-64

код
int asd = 0x1234'5678;

подсветка в QtC ошибка синтаксиса, при компиляции ошибка  
..\main_display.c:821:19: error: missing terminating ' character
   int asd = 0x1234'5678;
                   ^~~~~~
Пару лет назад использовал апострофы для разделения разрядов в QtC.

1) Как в мингвСИ заставить компилятор понимать апострофы?
2) Как в мингвС++ заставить компилятор понимать апострофы?
3) Как креатору объяснить, что на дворе 2021 и апострофы с 14 года не ошибка синтаксиса?
« Последнее редактирование: Апрель 21, 2021, 12:51 от juvf » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4725



Просмотр профиля WWW
« Ответ #1 : Апрель 21, 2021, 12:37 »

а нужный стандарт языка указан в .pro/.qbs/CMakeLists?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #2 : Апрель 21, 2021, 12:38 »

это как?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4725



Просмотр профиля WWW
« Ответ #3 : Апрель 21, 2021, 12:46 »

у разных компиляторов разный стандарт С++ по умолчанию.

например, в .pro файле надо писать CONFIG += c++14
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #4 : Апрель 21, 2021, 12:57 »

в pro CONFIG += c++14 есть. С с++ всё нормально, сорри, поторопился. Компилятор умеет и даже QtC не ругается.
А вот с СИ проблема. И компилятор и QtC ругаетются.

Пробовал CONFIG += c14 - не помогает
Пробавал QMAKE_CFLAGS += -std=c14, пишет error: unrecognized command line option '-std=c14'; did you mean '-std=c11'?
пробовал QMAKE_CFLAGS += -std=c11 - 11-ый не умеет апострафы.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4725



Просмотр профиля WWW
« Ответ #5 : Апрель 21, 2021, 13:28 »

с11 и даже с17 не умеет в апострофы. может для начала надо смотреть на стандарт/спецификацию языка? Улыбающийся

как в .pro указать стандарт для С не знаю, наверное только через QMAKE_CFLAGS += -std=c<smth> (это уже будет от компилятора зависеть)
« Последнее редактирование: Апрель 21, 2021, 13:31 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #6 : Апрель 21, 2021, 14:27 »

с11 и даже с17 не умеет в апострофы. может для начала надо смотреть на стандарт/спецификацию языка? Улыбающийся
Я а как сказал? Я где-то говорил обратное? Может для начала нужно почитать что я писал?

 
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #7 : Апрель 21, 2021, 14:41 »

Похоже мингв7.3 не умеет старше с11... ((( буду искать посвежее.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4725



Просмотр профиля WWW
« Ответ #8 : Апрель 21, 2021, 15:58 »

Я а как сказал? Я где-то говорил обратное? Может для начала нужно почитать что я писал?
ты сказал только о том, что попробовал наугад, вместо того, чтобы заглянуть в справочник по языку
Похоже мингв7.3 не умеет старше с11... ((( буду искать посвежее.
и чем это тебе поможет с апострофами?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #9 : Апрель 22, 2021, 06:23 »

ты сказал только о том, что попробовал наугад, вместо того, чтобы заглянуть в справочник по языку
где ты видишь, что я сказал "пробовал наугад"? Апострофы добавили в с++14, но.... например компилятор IAR... в IDE два диалекта c89 и с11. Выбираешь c11 и компилятор спокойно распознает апострофы-разделители. Некоторые считают с17/с18 не отдельный стандарт, а как с11 с дополнениями/исправлениями.

Цитировать
и чем это тебе поможет с апострофами?
ты либо тролишь, либо жёстко тупишь. я же писал мингв7.3 не умеет старше с11. Нужна версия посвежее....

Цитировать
даже с17 не умеет в апострофы
пруф?
« Последнее редактирование: Апрель 22, 2021, 08:37 от juvf » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4725



Просмотр профиля WWW
« Ответ #10 : Апрель 22, 2021, 11:48 »

в гугле забанили что ли? http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm поиском не могу найти ничего, связанного с апострофами. попытка компиляции клэнгом в Макос это подтверждает независимо от выбранного стандарта:
Код
C++ (Qt)
int main()
{
 int a = 123'123;
 return 0;
}
Код:
❯ clang -std=c17 untitled.c
untitled.c:3:14: warning: missing terminating ' character [-Winvalid-pp-token]
  int a = 123'123;
             ^
untitled.c:3:14: error: expected ';' at end of declaration
  int a = 123'123;
             ^
             ;
1 warning and 1 error generated.
при компиляции этого кода как С++ все, как ожидаемо, нормально:
Код:
❯ clang++ -std=c++17 untitled.c
clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
еще раз: стандарты С и С++ — это совершенно разные вещи, не надо их путать.

если твой IAR компилятор умеет что-то нестандартное, это его фичи/проблемы. (тут вспоминаем МС компилятор)
« Последнее редактирование: Апрель 22, 2021, 11:51 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #11 : Апрель 22, 2021, 12:31 »

Цитировать
еще раз: стандарты С и С++ — это совершенно разные вещи, не надо их путать.
Ещё раз "красное" и "рельсы" - это совершенно разные вещи, не надо их путать.

Цитировать
если твой IAR компилятор умеет что-то нестандартное
IAR не мой... и я ни о каких нестандартных вещах не говорю. Иар работает в стандарте с17/с18
Цитировать
The IAR C/C++ Compiler for Arm supports the INCITS/ISO/IEC 9899:2018 standard, also known as C18. C18 addresses defects in C11

Вобщем пока в MinGW это не умеет.... что делать? Может MSVC умеет? Смотрим описание на MSVC
Цитировать
In September 2020, Microsoft announced C11 and C17 standards support in MSVC
- ДАЛАДНА!!! Я думал что с11 уже 100 лет как включен, а его только в 2020 включили.... Пробую в онлайн компиляторе MSVC - а таки понимает апострофы....
Скачал, поставил только компилятор. Собрал холоворд - понимает апострофы.... конец банальный.... начал настраивать QtC.... коллега подключился к проекту... он собирает "порт" из этих же для linux на gcc7.3. У него переезд на посвежее - нереальный. Придется отложить до лучших времён. ((
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.081 секунд. Запросов: 23.