Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pomoc z #pragma pack()

Ostatnio zmodyfikowano 2017-01-26 22:36
Autor Wiadomość
pekfos
» 2017-01-26 17:54:34
@mokrowski: Wklejaj kod jak sobie tylko chcesz, aby tylko był na miejscu, zamiast na zewnętrznej stronie. Temat powinien zachowywać przydatność w czasie, a to może być cięższe, gdy twój link się urwie. Aktualny formatter nie obsługuje nowości składniowych i najprawdopodobniej nie będzie poprawiany. Wiedz jednak, że z nową iteracją serwisu będzie zupełnie nowy formatter i wtedy wszystkie teksty będą na nowo sformatowane. Jedno i drugie jest obecnie w trakcie tworzenia. (A jak już masz wklejać jakkolwiek, to lepiej chyba w [tt], niż [log]).

C/C++
long slow_fun() {
    long sum { };
    for( size_t i = 0; i < 10000000000; ++i ) {
        sum += i;
    }
    return sum;
}
Skompilowane w 32b, i może nigdy nie dojść do tej wartości.
P-156972
Elaine
» 2017-01-26 20:12:05
Aktualny formatter nie obsługuje nowości składniowych i najprawdopodobniej nie będzie poprawiany. Wiedz jednak, że z nową iteracją serwisu będzie zupełnie nowy formatter i wtedy wszystkie teksty będą na nowo sformatowane.
Mogę zagwarantować, że jakakolwiek implementacja różna od identyczności będzie zmieniać znaczenie kodu, ale to nie mój problem :)
P-156986
pekfos
» 2017-01-26 20:16:28
jakakolwiek implementacja różna od identyczności będzie zmieniać znaczenie kodu
Przykład takiego kodu?
P-156989
Elaine
» 2017-01-26 20:26:50
Stransponowałeś kwantyfikatory. Nie mając danego konkretnego formattera ciężko powiedzieć, jaki kod zmieni znaczenie.
P-156993
pekfos
» 2017-01-26 20:42:20
Zgodnie ze standardem, białe znaki (rozdzielające tokeny) są ignorowane. Stąd, pilnując stringów itp, nie można zmienić znaczenia kodu poprawiając wcięcia, lub odstępy między operatorami, skoro podział na tokeny przed i po jest zachowany.
P-156998
Elaine
» 2017-01-26 20:55:57
Zgodnie ze standardem, białe znaki (rozdzielające tokeny) są ignorowane.
Tylko od siódmej fazy translacji. Nie w pierwszych sześciu.

pilnując stringów itp
Nie doceniasz tego problemu. Ten kod się kompiluje:
#include <cstddef>

#define FOO(x) #x

template <std::size_t N>
struct foo;

template <>
struct foo<4> {
    static constexpr int ok = 0;
};

int main()
{
    return foo<sizeof(FOO(2+2))>::ok;
}
Spróbuj dodać spacje wokół dodawania. Nawet clang-format tego nie zauważa i psuje ten kod.
P-157000
pekfos
» 2017-01-26 21:24:19
Nawet clang-format tego nie zauważa i psuje ten kod.
Widać na makra nie ma mocnych ;) Można nie formatować argumentów makr, ale to w zasadzie bezcelowe. Formatter na tym forum musi najczęściej przerabiać fragmenty kodu, więc może nie wiedzieć co jest makrem. Tak samo szablonu nie można rozpoznać we wszystkich przypadkach. Same kolorowanie prędzej i w większej ilości nazbiera tu wrogów, niż formatowanie które czasem zepsuje złośliwie sformułowany kod ;) Dla specjalnych przypadków, będzie zostawiona opcja samego kolorowania.
P-157003
Elaine
» 2017-01-26 21:30:19
Dla specjalnych przypadków, będzie zostawiona opcja samego kolorowania.
<3
P-157005
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona