Я пытаюсь понять какой-то устаревший код, используя AfxBeginThread .
Насколько я понимаю, LPVOID определяется как указатель на пустой объект. У меня есть эта функция:
Start(LPVOID pParam){
...
int iTemp = (int)pParam;
...
}
А потом звонок:
int ch1 = 1;
AfxBeginThread(Start(), (LPVOID)ch1);
При компиляции для 64-битной системы появляется следующее предупреждение компилятора:
warning C4312: 'type cast': conversion from 'int' to 'LPVOID' of greater size
Я
- не на 100% уверен, что это правильное использование указателя
- чтобы избежать предупреждения, я мог бы использовать вспомогательную функцию, такую как (LPVOID) PtrToInt (ch1), но мне это тоже не подходит
Может ли кто-нибудь помочь мне понять механику, стоящую за этим? Я пытался найти в Интернете пример, который использует AfxBeginThread аналогичным образом, но до сих пор не получилось.
MS состояния:
Параметр является единственным значением. Значение, которое функция получает в этом параметре, является значением, которое было передано конструктору при создании объекта потока. Управляющая функция может интерпретировать это значение любым способом, который она выберет. Его можно рассматривать как скалярное значение или указатель на структуру, содержащую несколько параметров, или его можно игнорировать.