Одно дело указывать на ошибки. Еще один, чтобы быть грубым.
е академический кодекс или гипотетический вопрос. Первоначальной проблемой было преобразование кода из HP11 в HP1123 Itanium. В основном это сводится к ошибке компиляции на HP1123 Itanium. Это заставляет меня почесать голову при воспроизведении в Windows для изучения. Я удалил все, кроме самых основных аспектов ... Возможно, вам придется нажать клавишу D, чтобы выйти из окна консоли, если вы запустите его как есть:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char blah[6];
const int IAMCONST = 3;
int *pTOCONST;
pTOCONST = (int *) &IAMCONST;
(*pTOCONST) = 7;
printf("IAMCONST %d \n",IAMCONST);
printf("WHATISPOINTEDAT %d \n",(*pTOCONST));
printf("Address of IAMCONST %x pTOCONST %x\n",&IAMCONST, (pTOCONST));
cin >> blah;
return 0;
}
Вот вывод
IAMCONST 3
WHATISPOINTEDAT 7
Address of IAMCONST 35f9f0 pTOCONST 35f9f0
Все, что я могу сказать, какого черта? Это неопределенно, чтобы сделать это? Это самая нелогичная вещь, которую я видел для такого простого примера.
Обновить:
Действительно, после некоторого поиска в меню «Отладка» >> «Windows» >> «Разборка» произошла именно та оптимизация, которая описана ниже.
printf("IAMCONST %d \n",IAMCONST);
0024360E mov esi,esp
00243610 push 3
00243612 push offset string "IAMCONST %d \n" (2458D0h)
00243617 call dword ptr [__imp__printf (248338h)]
0024361D add esp,8
00243620 cmp esi,esp
00243622 call @ILT+325(__RTC_CheckEsp) (24114Ah)
Спасибо вам всем!