Как узнать размер переменных?

Тема в разделе "LANGS.C", создана пользователем MagnumGT, 17 ноя 2007.

  1. MagnumGT

    MagnumGT New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    122
    Есть функция:

    DWORD SomeFunc ()
    {
    DWORD x1, x2, x3...;
    return 0;
    };

    Можно ли как-то сделать, чтобы размер переменных просчитывался автоматом? Т.к.
    число переменных в ходе дальнейшей разработки будет варьироваться и каждый раз пересчитывать размер вручную не удобно


    заранее благодарен
     
  2. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Общий размер, что ли? Можно, но через задницу, с ассемблерными вставками (опираться на размер, выделенный в стеке под локальные переменные). Причём конкретная реализация зависит от компилятора. ИМХО, лучше массивом воспользоваться.
     
  3. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    SII
    массивом воспользоваться
    Если предположить, что тип переменных может быть разным, то логичнее использовать структуру, и не забывать о #pragma pack.
     
  4. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    q_q

    Ну, в примере одни дворды были, поэтому я предположил, что тип элементов одинаковый. А если нет -- то, конечно, структуру :)
     
  5. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    тут исчо такой прекол, что если делать просто кучу переменных, то не под каждую возможно будет выделена память, некоторые могут хранится в регистрах
     
  6. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Freeman

    Или компилятор может увидеть, что некоторые переменные используются только в начале функции, а другие -- только в конце, и выделить под них общее место в стеке. Потому и говорю: это зависит от компилятора, поэтому общего решения у задачи и нет.
     
  7. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto