Size: a a a

2020 October 08

AN

Alexander N in pro.cxx
Danya
Тебе нельзя называть что либо в твоём коде, начинающееся с __ или _ и заглавной буквы
Разработчикам стандартной библиотеки можно
_getch и тебе можно сделать, потому что оно не подпадает под эти правила
Это какое-то г явно нестандартное и не из стандартной либы
источник

D

Danya in pro.cxx
Alexander N
Это какое-то г явно нестандартное и не из стандартной либы
Я объяснил человеку просто
источник

D

Danya in pro.cxx
Danya
Тебе нельзя называть что либо в твоём коде, начинающееся с __ или _ и заглавной буквы
Разработчикам стандартной библиотеки можно
_getch и тебе можно сделать, потому что оно не подпадает под эти правила
Забавно, что TBB использует префикс __TBB_ для внутренних макросов и не помер, и проблем нигде нет
источник

W

Wild_Wind in pro.cxx
Danya
Забавно, что TBB использует префикс __TBB_ для внутренних макросов и не помер, и проблем нигде нет
Это случаем не из-за того, что он используется для parallel stl в libstdc++ и libc++?
источник

O

Ofee in pro.cxx
Wild_Wind
Это случаем не из-за того, что он используется для parallel stl в libstdc++ и libc++?
Я думаю, что его в некотором роде тоже можно назвать вендорской библиотекой, так что, полагаю, ему это позволительно)
источник

W

Wild_Wind in pro.cxx
А, макросы. Их вроде можно. Ибо препроцессор их отработает.
Это функции/данные нельзя, дабы манглинг не пересекался.
источник

D

Danya in pro.cxx
Wild_Wind
Это случаем не из-за того, что он используется для parallel stl в libstdc++ и libc++?
Я думаю это было задолго до этого)
источник

D

Danya in pro.cxx
Wild_Wind
А, макросы. Их вроде можно. Ибо препроцессор их отработает.
Это функции/данные нельзя, дабы манглинг не пересекался.
Вроде ничего нельзя
источник

O

Ofee in pro.cxx
Wild_Wind
А, макросы. Их вроде можно. Ибо препроцессор их отработает.
Это функции/данные нельзя, дабы манглинг не пересекался.
В случае макросов можно получить банальный конфликт имён и сломанную компиляцию при смене платформы или обновлении, так что для макросов это правило всё ещё имеет смысл
источник

W

Wild_Wind in pro.cxx
Danya
Вроде ничего нельзя
Но по логике, с __ делать плохо, т.к. можешь словить odr violation при линковке с stl, c++abi и  libunwind.
Всё. Больше хз зачем. Ну и для анализаторов, чтоб пониамали, что с __ начинается компиляторная магия и туда не стоит лезть.
источник

D

Danya in pro.cxx
Wild_Wind
Но по логике, с __ делать плохо, т.к. можешь словить odr violation при линковке с stl, c++abi и  libunwind.
Всё. Больше хз зачем. Ну и для анализаторов, чтоб пониамали, что с __ начинается компиляторная магия и туда не стоит лезть.
Ну публичные макросы там с TBB_
Непубличные с __TBB_
источник

D

Danya in pro.cxx
Там довольно тщательное тестирование на различных платформах, так что если что-то сломается, то все всё увидят
источник

O

Ofee in pro.cxx
Wild_Wind
Но по логике, с __ делать плохо, т.к. можешь словить odr violation при линковке с stl, c++abi и  libunwind.
Всё. Больше хз зачем. Ну и для анализаторов, чтоб пониамали, что с __ начинается компиляторная магия и туда не стоит лезть.
Для того, чтобы разные компиляторы имели свободу для именования собственных макросов, интринсиков, чтобы не было конфликтов с пользовательским кодом
источник

W

Wild_Wind in pro.cxx
Ofee
Для того, чтобы разные компиляторы имели свободу для именования собственных макросов, интринсиков, чтобы не было конфликтов с пользовательским кодом
Ну да, о чем и речь. Чтобы манглинг STL, C++ABI и Unwind не пересекался с пользовательским кодом.
источник

A

Alex in pro.cxx
Помогите мне понять condition_variable. Зачем ей нужен лок? Он защищает сам объект cv при многопоточном доступе? Другими словами, я обязан лочить перед notify() тот же мьютекс, который передаю в wait()? Даже если ни для чего другого в моей системе поток лок не нужен? Например, я использую атомик флаги и больше никаких данных, требующих защиты.
источник

O

Ofee in pro.cxx
Wild_Wind
Ну да, о чем и речь. Чтобы манглинг STL, C++ABI и Unwind не пересекался с пользовательским кодом.
У макросов нет манглинга, думаю, а вот конфликт имён банально может сделать код некомпилируемым ещё до этапа манглинга
источник

D

Danya in pro.cxx
Alex
Помогите мне понять condition_variable. Зачем ей нужен лок? Он защищает сам объект cv при многопоточном доступе? Другими словами, я обязан лочить перед notify() тот же мьютекс, который передаю в wait()? Даже если ни для чего другого в моей системе поток лок не нужен? Например, я использую атомик флаги и больше никаких данных, требующих защиты.
https://youtu.be/dFEBrGJ8j2w
Вот здесь об этом говорится вроде
источник

W

Wild_Wind in pro.cxx
Ofee
У макросов нет манглинга, думаю, а вот конфликт имён банально может сделать код некомпилируемым ещё до этапа манглинга
Потому я и был удивлен вот тут https://t.me/ProCxx/409269, т.к. макросов в подлежащей компиляции единице трансляции нет. Их препроцессор развернет.
источник

D

Danya in pro.cxx
Если есть время, рекомендую ознакомиться
источник

A

Alex in pro.cxx
Danya
https://youtu.be/dFEBrGJ8j2w
Вот здесь об этом говорится вроде
Большое спасибо, обязательно
источник