Показать сообщение отдельно

  #5072  
Старый 04.02.2021, 17:25
ishi
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами: 6483143

Репутация: 93
По умолчанию

Ребят, меня тралит компилятор, помогите

Есть функция, чья задача, это при вызове получить аргументы, отправленные в MessageBoxA, и позволить их изменить

Эта функция корректно отображает аргументы, т.е. всё перехватывается

C++:





Код:
__declspec
(
naked
)
void
_stdcall
printSomeShit
(
int
a
,
char
*
b
,
char
*
c
,
int
d
)
{
char
bb
[
256
]
;
char
cc
[
256
]
;
printf
(
"\n"
)
;
std
::
cin
>>
bb
;
b
=
bb
;
printf
(
"\n"
)
;
std
::
cin
>>
cc
;
c
=
cc
;
printf
(
"\n%d || %s || %s || %d"
,
a
,
b
,
c
,
d
)
;
_asm ret
;
}


Однако же попытки присваивания не меняют значение аргументов, хотя если в отладчике студии свапнуть адреса, то всё сработает

Я решил посмотреть, что делает в этом случае компилятор, и вот:



То-есть, он вообще ничего не делает. Он буквально проигнорировал b = bb и не прописал ей инструкций. В смысле? Почему?

Если же попытаться написать &b == &bb, то он даже компилировать программу откажется.

Я не понимаю, что тут происходит ,_,
 
Ответить с цитированием