Одно дело указывать на ошибки. Еще один, чтобы быть грубым.

е академический кодекс или гипотетический вопрос. Первоначальной проблемой было преобразование кода из 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) 

Спасибо вам всем!

Ответы на вопрос(4)

Ваш ответ на вопрос