Вопрос № 86135: Здравствуйте.
Помогите, пожалуйста, у меня уже голова кругом. В приложении кусок кода. Компилятор C++ Bulder 6. Пытаюсь выровнять данные по границе 16 байт. По всем признакам, это делается директивой #pragma pack(16), однако данные не хотят вырав...Вопрос № 86169: Здраствуйте уважаемые эксперты. я учусь программировать под констолью, при проектировании интерфейса необходимо очистить консоль для последующего вывода следующего меню. Подскажите пожалуйста как это можно организовать.
Программирую под 2003 студией....
Вопрос № 86.135
Здравствуйте.
Помогите, пожалуйста, у меня уже голова кругом. В приложении кусок кода. Компилятор C++ Bulder 6. Пытаюсь выровнять данные по границе 16 байт. По всем признакам, это делается директивой #pragma pack(16), однако данные не хотят выравниваться. Я уже добавил лишние float Unused[7] для дополнения структуры до размера, кратного 16 байтам, но все равно не помогает.
Может, кто-нибудь сталкивался с подобным? Хотя бы что можно еще попробовать?
Может быть, можно выделить память с помощью GlobalAlloc с выравниванием?
Отвечает: Sergey A. Wedensky
Здравствуйте, John Paramol!
Директива #pragma pack указывает какое выравнивание должно быть у членов структур, т.е. если Вы напишете
#pragma pack(push, 16)
struct s
{
DWORD d1;
WORD d2;
BYTE d3;
};
#pragma pack(pop)
то в памяти эта структура будет располагаться примерно следующим образом:
0 8 16 24 32 40
++++------------++--------------+---------------
dw w b
Если я правильно понял, Вам надо создать массив структур так, чтобы адрес каждой был выровнен на некоторую границу (так и не понял - 16 или все-таки 128 б?).
В приложении вариант.
Удачи!
Приложение:
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 10.05.2007, 10:39 Оценка за ответ: 5 Комментарий оценки: Спасибо. Способ рабочий, но посмотрите, пожалуйста, минифорум.
Вопрос № 86.169
Здраствуйте уважаемые эксперты. я учусь программировать под констолью, при проектировании интерфейса необходимо очистить консоль для последующего вывода следующего меню. Подскажите пожалуйста как это можно организовать. Программирую под 2003 студией.Заранее благодарю.
Отправлен: 09.05.2007, 19:14
Вопрос задал: Shayen (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Ghoul
Здравствуйте, Shayen!
#include <stdlib.h>
...
system("CLS");
Ответ отправил: Ghoul (статус: 1-ый класс)
Ответ отправлен: 09.05.2007, 19:42 Оценка за ответ: 5
Отвечает: kool
Здравствуйте, Shayen!
В conio.h есть ф-ция clrscr().
Удачи!
--------- I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 09.05.2007, 23:24 Оценка за ответ: 5
Отвечает: Tsunami
Здравствуйте, Shayen!
Проще всего это сделать, используя system("cls"); прототип функции в stdlib.h (или cstdlib).
Пример:
Приложение:
Ответ отправил: Tsunami (статус: 1-ый класс)
Ответ отправлен: 10.05.2007, 00:52 Оценка за ответ: 5