Алексей
Для меня, на винде обязательная штука.
Алексей
Как и conEmu
ㅤ
Да с блокнотом это пиздец подъеба конечно. Берешь файлик с какого нибудь девайса с флешки или сд карты, садишься у клиента за любой доступный компьютер, думаешь щас я быстро его исправлю. А хуй...
ㅤ
Вот калькулятор они че-то переписали. На гитхабе его код лежит весь кривой и косой. иф в ифе это еще цветочки...
ㅤ
На хабре был разбор этого говнокода от микрософта. Лучше бы не позорились и не выкладывали его. Анализатор кода просто ревел со смеху
CryoniXXX.cc 🇰🇵
ㅤ
При том там в коде есть забавные условия которым не суждено исполнится. Но они зачем-то там есть
ㅤ
И оно даже как-то работает
Dimanche
Dimanche
Он Трейсит дед код
ㅤ
ㅤ
Он Трейсит дед код
Не там не дед код, но просто вероятность выполнения условия была околонулевой. Я уже не помню че там
Dimanche
Dimanche
Dimanche
вим бы поставили
Dimanche
Топ
Dimanche
За свои деньги
ㅤ
ㅤ
Кто так строки сравнивает блеать?
Dimanche
Попахивает говном
Dimanche
Но в си ++ там со строками беда вроде
Dimanche
Еще со времен си
Dimanche
Надо Биг бусти подключать
ㅤ
В данном случае сравнивают два указателя которые никогда не совпадут
Алексей
std::string вполне можно.
ㅤ
При том что этот калькулятор это помесь си и си шарпа
Dimanche
Dimanche
Я уже не помню че там в плюсах
ㅤ
m_resolvedName == L"en-US" - всегда будет фалс
ㅤ
Потомучто и то и то указатель
ㅤ
Они никогда не совпадудт
Алексей
char *str = "str";
if(str == "str")
{
std::cout << str << " == str\n";
}
Алексей
проверил.
ㅤ
Dimanche
Душновато
ㅤ
Dimanche
Anton
Пхп перлы и так далее
есть такое. потому у меня больше одного эклипса. один для с/++, другой для пхп/перл, третий для питона... :)
Anton
Notepad++
вскод. часто ставлю щас на винодовые серваки....
Anton
Алексей
main.cpp:17:18: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
Алексей
Компилятор валит варнинг
ㅤ
Логично что он валит варнинг
ㅤ
Ты сравниваешь указатель *str с const char*
Anton
Компилятор валит варнинг
это ерунда, только что у тебя указатель не константный сравнивается с константной строкой
ㅤ
ㅤ
Не знаю как объяснить на популярном языке. Если не понял то забей
ㅤ
Тот кто знает что такое указатели - тот поймет
ㅤ
Это не понимают люди которые приходят в си с языков высокого уровня, где там перегруженные операторы == и так далее. Они думают что это нормально
ㅤ
Anton
у тебя две разные строки "str", которые находятся в константном сегменте данных. компилятор может это оптимизироват и будет одна строка, тогда будет тру. а может и де сделать, тогда фолс
Dimanche
кароче
Dimanche
как правильно напишите
Dimanche
а то че мусолить
Anton
ㅤ
Anton
ну я помню был. хотя может не у гцц :)
Anton
я в этом плане стар...
ㅤ
Perform interprocedural constant propagation. This optimization analyzes the program to determine when values passed to functions are constants and then optimizes accordingly. This optimization can substantially increase performance if the application has constants passed to functions. This flag is enabled by default at -O2, -Os and -O3.
ㅤ
Есть такой
Алексей
Ну да, мой косяк. Я думал разные строки, будут иметь разный адрес. А компилятор их объединил.
Anton
whether successive evaluations of a string-literal yield the same or a different object is unspecified
ㅤ
Вообщем какая разница. Так сравнивать даже в своем коде не надо. Потому что проект может быть скомпилирован на неправильном "gcc" и все поедет по пизде
Anton
However if you will write
if ( "hello World" == "hello World" )
{
//...
}
then the condition can yield either true or false depending on the corresponding compiler option.
ㅤ
Так вот какая эта "corresponding compiler option."
ㅤ
The Microsoft c++ compiler has the option GF to indicate string pooling.
ㅤ
Во точняк. В microsoft компиляторе я помню эту опцию
ㅤ
стринг пулинг
ㅤ
https://learn.microsoft.com/en-us/cpp/build/reference/gf-eliminate-duplicate-strings?view=msvc-170
ㅤ
А еще константу можно поменять на ходу и поломать всю программу
ㅤ
Не помню как в линуксах. В винде это делается просто. VirtualUnprotect - снимаешь со страницы RO, пишешь туда, VirtualProtect -
Anton
-fmerge-constants по идее у гцц
ㅤ
(string constants and floating point constants
Интересно почему только стринги и флоаты. А обычные числа почему нельзя так же оптимизировать?
Anton
ULL по идее только 64 бита, что там оптимизировать особо то. ли ты про массивы? тем довольно опасно одинаковые адреса иметь, по идее