- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
#include <iostream>
using namespace std;
struct Foo {char a; int b; char c;};
struct Bar {char a; char b; int c;};
int main() {
cout << sizeof(Foo) << endl;
cout << sizeof(Bar) << endl;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
#include <iostream>
using namespace std;
struct Foo {char a; int b; char c;};
struct Bar {char a; char b; int c;};
int main() {
cout << sizeof(Foo) << endl;
cout << sizeof(Bar) << endl;
}
https://ideone.com/XKWey3
Какой бароп )))
3_dar 08.10.2020 01:24 # 0
guest8 08.10.2020 01:37 # −999
3_dar 08.10.2020 01:41 # 0
nemyx 08.10.2020 01:45 # 0
Во всех модулях, из которых собирается экзешник, порядок полей в структуре должен быть одинаковым, иначе данные распидорасит.
3_dar 08.10.2020 01:48 # 0
nemyx 08.10.2020 01:52 # 0
У тебя есть модуль kurochka.c. В нём ты вызываешь функцию pitushnya из другого модуля, в которую передаёшь структуру.
Чтобы это работало, в модулях kurochka.c и pethu.c порядок полей в структуре не должен зависеть от параметров оптимизации.
guest8 08.10.2020 02:02 # −999
3_dar 08.10.2020 02:06 # +1
guest8 08.10.2020 02:10 # −999
bormand 08.10.2020 02:14 # 0
guest8 08.10.2020 02:15 # −999
bormand 08.10.2020 02:17 # 0
Fike 08.10.2020 02:18 # 0
guest8 08.10.2020 02:22 # −999
Fike 08.10.2020 02:25 # 0
guest8 08.10.2020 02:26 # −999
guest8 08.10.2020 02:18 # −999
bormand 08.10.2020 02:20 # 0
guest8 08.10.2020 02:22 # −999
bormand 08.10.2020 02:24 # 0
Но смешивать дебаг с релизом, как петух ниже предлагает, часто тоже нельзя. В студии например просто не слинкуется.
guest8 08.10.2020 02:25 # −999
bormand 08.10.2020 02:26 # 0
И вроде сам стандарт его благославляет, в отличие от перестановки.
guest8 08.10.2020 02:28 # −999
bormand 08.10.2020 02:29 # 0
Хотя какую-нибудь #pragma reorder можно сделать по аналогии с #pragma pack.
guest8 08.10.2020 02:31 # −999
bormand 08.10.2020 02:33 # 0
А на самом деле всем похуй. Опытный сишник и сам в состоянии расположить поля правильно, чтобы не было лишних паддингов.
guest8 08.10.2020 02:35 # −999
bormand 08.10.2020 02:44 # 0
guest8 08.10.2020 02:51 # −999
nemyx 08.10.2020 02:42 # 0
Что-то сложно получается. Тогда смещения всех остальных переменных поедут, нельзя будет делать компилтаймовую оптимизацию, чтобы класть структуру в регистр, ещё какую-нибудь оптимизацию придётся отменить...
guest8 08.10.2020 02:45 # −999
nemyx 08.10.2020 02:14 # 0
guest8 08.10.2020 02:15 # −999
nemyx 08.10.2020 02:17 # 0
Откуда компилятору с -O0 знать, что ты хочешь экономить память?
guest8 08.10.2020 02:17 # −999
guest8 08.10.2020 01:54 # −999
guest8 08.10.2020 01:59 # −999
3_dar 08.10.2020 01:43 # 0
guest8 08.10.2020 01:56 # −999
j123123 08.10.2020 01:49 # +1
guest8 08.10.2020 01:37 # −999
j123123 08.10.2020 01:44 # 0
становилось как
3_dar 08.10.2020 01:49 # 0
j123123 08.10.2020 01:54 # 0
3_dar 08.10.2020 02:09 # 0
3_dar 08.10.2020 02:13 # 0
nemyx 08.10.2020 01:57 # 0
https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#Common-Type-Attributes
j123123 08.10.2020 01:59 # 0
3_dar 08.10.2020 02:02 # 0
j123123 08.10.2020 02:04 # 0
Desktop 08.10.2020 02:09 # 0
Fike 08.10.2020 02:11 # +2
bormand 08.10.2020 02:40 # 0
nemyx 08.10.2020 02:57 # 0
guest8 08.10.2020 03:08 # −999