Size: a a a

2021 July 02

SK

Stas Koynov in pro.cxx
магия на ровном месте. ладно нет полного кода, проехали. но мемкопи мемсет. я бы на кодревью не пропустил. есть POD. есть волотильный адрес где оно лежит все. что там может не компилится я не понимаю.
источник

АК

Александр Караев... in pro.cxx
Чтобы побороть ошибку, нужно пометить operator= как volatile (аналогично const'у). Но я не ручаюсь за последствия
источник

C

Chuvi in pro.cxx
так его это... не существует. Как пометить то?
источник

АК

Александр Караев... in pro.cxx
Можно написать вручную и пометить volatile + default, но это всё равно нечто странное.
источник

SK

Stas Koynov in pro.cxx
вот если Си код оставить как есть:
volatile RG_Params_t *RG_OUT=(volatile RG_Params_t*) RG_ADDR;
void InitRGC()
{
  RG_Params_t OutCfg;
  memset(&OutCfg,0,sizeof(OutCfg));
  OutCfg.PAR_1=1;
  OutCfg.PAR_2=0;
  OutCfg.PAR_3=1;
  OutCfg.PAR_4=0;
  *RG_OUT=OutCfg;  //вот тут компилятор говорит что низя?
}
источник

C

Chuvi in pro.cxx
нет. Как удивительно не говорит.
источник

SK

Stas Koynov in pro.cxx
тогда он запутался в _t и _s наверное.
источник

SK

Stas Koynov in pro.cxx
а что оно тогда не работает?
источник

C

Chuvi in pro.cxx
так это си-шный фрашмент.

Короче, ладно, проехали.  Видимо тащить работу с регистрами в С++ действительно идея пока так себе.
источник

SK

Stas Koynov in pro.cxx
и что? я прекрасно работаю с HAL-ом и CMSIS-ом на ++. везде такая кухня С++ прекрасно все понимает и делает. что тут не валидного я не понял. есть железо. есть его адрес. мы знаем растановку бит. мы сделали структуру. она ровно 32 бита. мы ее занулили. выставили битики и пачкой через указатель записали.
источник

C

Chuvi in pro.cxx
ну ты понимаешь, что я действительно не знаю, что не понравилось моему компилятору. может в 4.8.1 есть баг на эту тему, может что то ещё. я честно не знаю почему он так ругается
источник

SK

Stas Koynov in pro.cxx
ну тыж говорил что если оставить сишный код то все ништяк. или ты его gcc компилил а не g++. я запутался...
источник

C

Chuvi in pro.cxx
сишный код - живёт в .c файле. c++ - в .cpp там компилятор сам разберётся чем ему компилить
источник

SK

Stas Koynov in pro.cxx
компиль все одним компилятором с одними флагами, не придумывай. а то потом рождаются байки и всякие предложения в комитет мол волотоайл для коротких операций плохо. бесконечный цикл плохо... щас вот запретят по указателю писать... тогда точно ++ на помойку
источник

АК

Александр Караев... in pro.cxx
Я смотрю, deprecated compound assignment - больная тема
источник

C

Chuvi in pro.cxx
Ну вот мне компилятор в .c файле разрешает писать по volatile указателю, а в .cpp нет.
а флагов одних быть не может
Если я пытаюсь добавить -fno-rtti -fno-exceptions при компиляции .с-файлов, у меня компилятор спрашивает "какого чёрта"
источник

SK

Stas Koynov in pro.cxx
ты все должен компилить g++ никаких gcc
источник

SK

Stas Koynov in pro.cxx
я вот недавно разгребал там ребята помимо вот этого мол c это gcc а вот cpp это g++, так они умудрились для gcc nano newlib так для ++ просто newlib там вот вообще песня была...
источник

C

Chuvi in pro.cxx
 testCCompiler.c:2:3: error: #error "The CMAKE_C_COMPILER is set to a C++ compiler"
[build]      # error "The CMAKE_C_COMPILER is set to a C++ compiler"

проваль
источник

SK

Stas Koynov in pro.cxx
даже больше скажу и .s файлы тоже отдаешь g++ а вот он уже сам все передаст куда надо и линковать тоже лучше через него а не просто через ld
источник