Вопрос Sizeof(void*) возвращает 8 байт с флагом -m32

Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
Компилирую с помощью
Пожалуйста, авторизуйтесь для просмотра ссылки.
на x64 винде, флаг для линкера и компилятора -m32 через cmake. Но при sizeof(void*) получаю 8 байт 1678184110175.png
process hacker показывает x86 1678184139341.png
В чем может быть трабл?
 
std::X$$V::Z::_Func_impl_no_alloc
Пользователь
Статус
Оффлайн
Регистрация
30 Мар 2019
Сообщения
389
Реакции[?]
103
Поинты[?]
1K
Компилирую с помощью
Пожалуйста, авторизуйтесь для просмотра ссылки.
на x64 винде, флаг для линкера и компилятора -m32 через cmake. Но при sizeof(void*) получаю 8 байт Посмотреть вложение 240979
process hacker показывает x86 Посмотреть вложение 240980
В чем может быть трабл?
а можешь прям в пустом проекте в терминал размер вывести? а то ты только информацию из вскода (или что это) показал, а он вполне может обмануть (особенно если учесть, что у тебя
Пожалуйста, авторизуйтесь для просмотра ссылки.
клэнг, который так-то 64битный)

Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Начинающий
Статус
Оффлайн
Регистрация
4 Мар 2023
Сообщения
23
Реакции[?]
6
Поинты[?]
0
Я посмотрю, как ты модульные проекты на GCC том же самом будешь делать :NotLikeThis:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -march=i686")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")

Я думаю, нужно просто указать для компилятора и линкера, чтобы clang генерировал код для 32-х битной архитектуры
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
а можешь прям в пустом проекте в терминал размер вывести? а то ты только информацию из вскода (или что это) показал, а он вполне может обмануть (особенно если учесть, что у тебя
Пожалуйста, авторизуйтесь для просмотра ссылки.
клэнг, который так-то 64битный)

Пожалуйста, авторизуйтесь для просмотра ссылки.
Да просто смешно было, я выводил в консоль, у меня через раз то 8, то 4... Ребутнул пк, очистил кэш смейк, и все нормально
 
Начинающий
Статус
Оффлайн
Регистрация
8 Июн 2019
Сообщения
147
Реакции[?]
21
Поинты[?]
0
Компилирую с помощью
Пожалуйста, авторизуйтесь для просмотра ссылки.
на x64 винде, флаг для линкера и компилятора -m32 через cmake. Но при sizeof(void*) получаю 8 байт Посмотреть вложение 240979
process hacker показывает x86 Посмотреть вложение 240980
В чем может быть трабл?
Проблема заключается в том, что вы используете флаг -m32 для компиляции и линковки, который указывает компилятору и линкеру использовать 32-битный режим, но ваша операционная система является 64-битной, поэтому sizeof(void*) будет равен 8 байтам.

Флаг -m32 заставляет компилятор и линкер генерировать код для 32-битной архитектуры, которая имеет размер указателя 4 байта, но также требует, чтобы ваша операционная система была 32-битной. Если вы хотите использовать 32-битный режим на 64-битной операционной системе, вам необходимо использовать кросс-компиляцию.

Вам следует либо использовать флаг -m64, который заставит компилятор и линкер использовать 64-битный режим, либо установить и использовать 32-битную версию операционной системы для использования флага -m32.
 
Пользователь
Статус
Оффлайн
Регистрация
27 Дек 2020
Сообщения
60
Реакции[?]
53
Поинты[?]
34K
без кросскомпайла ему без разницы на твоё решение, что посчитает нужным - то и впишет
 
Сверху Снизу