Size: a a a

IT KPI C/С++ ХВ (хорошо, что не UB)

2017 November 28

OS

Oleksandr Shaposhnikov in IT KPI C/С++ ХВ (хорошо, что не UB)
источник

O

Oleh in IT KPI C/С++ ХВ (хорошо, что не UB)
Понял, спасибо
источник

V

Vsevolod in IT KPI C/С++ ХВ (хорошо, что не UB)
Rabu
итак, я прошел cs50. хочу выучить с++ и qt. нет ни у кого годных сайтов с пошаговым? (без видео)
Можно начать с разбора IDE (Qt Creator), основ (qmake, QObject, QString, QRegExp, Q-контейнеры) и Qt Quick / QML (JavaScript) / Controls 2

(Последнее -- для построения интерфейса, может в лёгкую интеграцию с C++ (вызов функций, рисование)
Или, например, модель и её функции могут быть написаны на плюсах, а вьюха  на QML)
источник

KE

Kind Elk in IT KPI C/С++ ХВ (хорошо, что не UB)
я тут немного опоздал, но в С есть перегрузка по сигнатуре ака ad-hoc полиморфизм.
типа void foo(int) и void foo(char*) это разные вещи.
источник

a

alnyan in IT KPI C/С++ ХВ (хорошо, что не UB)
Kind Elk
я тут немного опоздал, но в С есть перегрузка по сигнатуре ака ad-hoc полиморфизм.
типа void foo(int) и void foo(char*) это разные вещи.
При линковке возникнет ошибка о повторном объявлении
источник

a

alnyan in IT KPI C/С++ ХВ (хорошо, что не UB)
Оба объявления генерируют одинаковое имя символа в результирущем бинарнике
источник

OS

Oksana Shyshka in IT KPI C/С++ ХВ (хорошо, что не UB)
Kind Elk
я тут немного опоздал, но в С есть перегрузка по сигнатуре ака ad-hoc полиморфизм.
типа void foo(int) и void foo(char*) это разные вещи.
Там є трохи інша фіча. Типу

void foo( void * data, size_t data_size )

Це аналог темплейтів у C++
источник

KE

Kind Elk in IT KPI C/С++ ХВ (хорошо, что не UB)
надо проверить, с С не работал толком, только в формате лаб. но спасибо за интересный вопрос в любом случае, есть повод покопаться
источник

KE

Kind Elk in IT KPI C/С++ ХВ (хорошо, что не UB)
alnyan
Оба объявления генерируют одинаковое имя символа в результирущем бинарнике
с одной стороны да, с  другой - сигнатура же входит в имя, нет?
проверю вечером - отпишу
источник

OS

Oksana Shyshka in IT KPI C/С++ ХВ (хорошо, что не UB)
Kind Elk
надо проверить, с С не работал толком, только в формате лаб. но спасибо за интересный вопрос в любом случае, есть повод покопаться
Я недавно розбиралася із тим, навіщо Взагалі потрібен void *. Виявилося, що це потужна штука.

Якщо по простому, то int * та char * відрізняються лише тим, який РОЗМІР має тип даних, який починається із такої-то адреси
источник

KE

Kind Elk in IT KPI C/С++ ХВ (хорошо, что не UB)
не, с поинтерами действительно понятно, что это просто uint_8t/uint_16t/uint_32t/uint_64t, в плюсах в этом плане очень больших отличий нет, в зависимости от архитектуры и на что он указывает разбираться приходится прокладке между монитором и креслом.
как плюсовику просто немного странно, что компилеры С не включают типы аргументов в сгенерённое имя функции, это же всё равно в компайл-тайме разруливается. хотя, с учётом того, что со стандарта С99 это очень разные языки, оно и закономерно
источник

OS

Oksana Shyshka in IT KPI C/С++ ХВ (хорошо, что не UB)
Ось хороший приклад ф-ї swap, реалізованої на C (stackoverflow)

void swap(void *a, void *b, size_t size) {
 char temp[size]; // C99, use malloc otherwise
 // char serves as the type for "generic" byte arrays

 memcpy(temp, b,    size);
 memcpy(b,    a,    size);
 memcpy(a,    temp, size);
}
источник

KE

Kind Elk in IT KPI C/С++ ХВ (хорошо, что не UB)
мгм, але ж можна простіше (якщо контекст дозволяє, звичайно):
void swap(void *&lhs, void *&rhs)
{
 void *tmp;
 tmp = rhs;
 rhs = lhs;
 lhs = tmp;
}
источник

KE

Kind Elk in IT KPI C/С++ ХВ (хорошо, что не UB)
источник

KE

Kind Elk in IT KPI C/С++ ХВ (хорошо, что не UB)
якщо це не для дефрагментації пам'яті робиться
источник

OS

Oksana Shyshka in IT KPI C/С++ ХВ (хорошо, что не UB)
Kind Elk
мгм, але ж можна простіше (якщо контекст дозволяє, звичайно):
void swap(void *&lhs, void *&rhs)
{
 void *tmp;
 tmp = rhs;
 rhs = lhs;
 lhs = tmp;
}
No
источник

KE

Kind Elk in IT KPI C/С++ ХВ (хорошо, что не UB)
в С не запрацює?(
источник

OS

Oksana Shyshka in IT KPI C/С++ ХВ (хорошо, что не UB)
Void * temp = a. Компілятор не знатиме, скільки байт зчитати, починаючи із адреси a
источник

KE

Kind Elk in IT KPI C/С++ ХВ (хорошо, что не UB)
стоп, це ж поінтер, вони ж одного розміру. ми ж тільки поінтер тягаємо, а не дані
источник

R

Rabu in IT KPI C/С++ ХВ (хорошо, что не UB)
Kind Elk
мгм, але ж можна простіше (якщо контекст дозволяє, звичайно):
void swap(void *&lhs, void *&rhs)
{
 void *tmp;
 tmp = rhs;
 rhs = lhs;
 lhs = tmp;
}
а его не оптимизирует до void lhs ?
источник