Страница 158 из 386

Re: Вопросы по С/С++ (СИ)

Добавлено: Пт июн 14, 2013 09:19:41
Kavka
"обрезанный по маске" это отдельные биты проверить чтобы?
Тогда
if ( c != (PINC & 0b00000001) )
Переменная c будет сравниваться с числом полученным от наложения побитового И на значение прочитанное из порта PINC.

Re: Вопросы по С/С++ (СИ)

Добавлено: Пт июн 14, 2013 09:20:04
ibiza11
if (c != (PINC&0x01))

Re: Вопросы по С/С++ (СИ)

Добавлено: Пт июн 14, 2013 12:05:14
Мikа
Я был близок к истине, спасибо :)

Re: Вопросы по С/С++ (СИ)

Добавлено: Пт июн 14, 2013 12:57:16
Мikа
Парни, а теперь вот что за вопрос (гугл не очень помог): как правильно сделать вынесеный файл имя.h и к нему обратиться.
Условно у меня есть строка, которая делает PORTB=(a+c);
Я хочу вынести эту строку в отдельный файл и прикрепить её через #include имя-файла. А потом в порграмме ставить какое-то слово, которое будет при компиляции заменяться на PORTB=(a+c);. Как это пишется? Я пробовал в АСтудии 6 создавать файл.h, но что-то я не так с функциями там пишу видимо Оо

Re: Вопросы по С/С++ (СИ)

Добавлено: Пт июн 14, 2013 13:33:21
Аlex

Re: Вопросы по С/С++ (СИ)

Добавлено: Пт июн 14, 2013 16:03:29
menzoda
Да это не на сайт ПИКа нужно отправлять, а к Кернигану и Ричи. Неужели нельзя почитать базовую литературу, чтобы не засорять форум такими вопросами? А про гугл ты нагло врешь, все там есть.

Re: Вопросы по С/С++ (СИ)

Добавлено: Пт июн 14, 2013 16:25:25
vitalik_1984
зачем переменная? не совсем понятно зачем она нужна.
Можно вообще не использовать сравнение в условиях
например так
if(!PINC&0b00000001){
//тут все что нужно;}

Ой :facepalm: уже ответили :)))

Re: Вопросы по С/С++ (СИ)

Добавлено: Пн июн 17, 2013 16:40:14
АндрейАвербах
Всем доброго времени суток. С моим вопросом мне посоветовали идти сюда.
Только начал изучать WinAPI в С++ написал такой код.

Код: Выделить всё

#include <windows.h>
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    MessageBox(0, "Info", "Text", MB_OK);
    return 0;
}
Компилирую в Dev-C++, компилируется нормально, запускаю, вылазит мое окошко и какое-то черное окошко. Как убрать черное окошко?

Re: Вопросы по С/С++ (СИ)

Добавлено: Пн июн 17, 2013 16:58:31
Tolmi
Черное окошко - я так понимаю консоль.
Надо создать правильный проект, для GUI приложения.

Re: Вопросы по С/С++ (СИ)

Добавлено: Пн июн 17, 2013 17:06:39
ChipKiller

Код: Выделить всё

Как убрать черное окошко?
чтобы не было подобных вопросов, начните с основ - Петцольд Ч. Программирование для Windows 95

Re: Вопросы по С/С++ (СИ)

Добавлено: Пн июн 17, 2013 21:08:33
FreshMan
как сделать циклический сдвиг ?

Re: Вопросы по С/С++ (СИ)

Добавлено: Пн июн 17, 2013 21:19:21
Аlex
Создать цикл и в нём сдвигать.

Re: Вопросы по С/С++ (СИ)

Добавлено: Пн июн 17, 2013 21:28:03
FreshMan
может я неверно выразился или недопонимаю что-то, но под циклическим сдвигом я понимаю сдвиг, допустим в право, при котором ушедшие разряды не пропадают а появляются с лева

Re: Вопросы по С/С++ (СИ)

Добавлено: Пн июн 17, 2013 21:36:56
ibiza11
ну да. можно и так понимать циклический сдвиг. но от этого не меняется сам принцип, сделать цикл и сдвигать)))

Re: Вопросы по С/С++ (СИ)

Добавлено: Пн июн 17, 2013 21:42:52
Аlex

Код: Выделить всё

unsigned int i=0;

i=((i&1)<<15)|(i>>1);           // вправо
i=((i&(1L<<15))>>15)|(i<<1);    // влево
Код будет меньше, если написать его в несколько строк - сохранение бита, сдвига переменной и вставка сохранённого бита с другой стороны переменной.

Re: Вопросы по С/С++ (СИ)

Добавлено: Вт июн 18, 2013 12:42:48
АндрейАвербах
Написал такую штуку в учебных целях

Код: Выделить всё

#include <windows.h>
#include <windowsx.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void OnDestroy(HWND);
void OnPaint(HWND);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
{
    char szClassName[] = "MainWindow";
    char szTitle[] = "My second window!";
    MSG Msg;
    WNDCLASS wc;
    ZeroMemory(&wc, sizeof(wc));
    wc.lpfnWndProc = WndProc;
    wc.hInstance = hInst;
    wc.hIcon = LoadIcon(0, IDI_APPLICATION);
    wc.hCursor = LoadCursor(0, IDC_ARROW);
    wc.hbrBackground = (HBRUSH) 0;
    wc.lpszClassName = szClassName;
    RegisterClass(&wc);
    HWND hwnd = CreateWindow(szClassName, szTitle, WS_OVERLAPPEDWINDOW, 100, 100, 500, 500, HWND_DESKTOP, 0, hInst, 0);
    ShowWindow(hwnd, SW_SHOWNORMAL);
    while (GetMessage(&Msg, NULL, 0, 0))//Íå ñòàâèòü òî÷êó ñ çàïÿòîé òóò!!!
    { 
          DispatchMessage(&Msg);
    }
    return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        switch(message)
        {
                   
                   HANDLE_MSG(hwnd, WM_PAINT, OnPaint);   
                   HANDLE_MSG(hwnd, WM_DESTROY, OnDestroy);//Âìåñòî case 
                   default:
                           return(DefWindowProc(hwnd, message, wParam, lParam));
         }
         return 0;
}     
void OnDestroy(HWND)
{
     PostQuitMessage(0);
}
void OnPaint(HWND hwnd)
{
     char szText[] = "Òåêñò äëÿ ãëàâíîãî îêíà";
     PAINTSTRUCT ps;
     HDC hdc = BeginPaint(hwnd, &ps);
     TextOut(hdc, 0, 0, szText, strlen(szText));
     EndPaint(hwnd, &ps);
}
Компилирую, компилятор пишет [Linker error] undefined reference to `TextOutA@20' ld returned 1 exit status , что делать - не пойму.

Re: Вопросы по С/С++ (СИ)

Добавлено: Вт июн 18, 2013 12:59:05
ChipKiller
АндрейАвербах писал(а):... что делать - не пойму.
сделать, что просит линкер - подключить Gdi32.lib

PS. на подобные вопросы ответ есть здесь

Re: Вопросы по С/С++ (СИ)

Добавлено: Вт июн 18, 2013 13:33:11
АндрейАвербах
После инклудов написал такую строку

Код: Выделить всё

#pragma comment(lib,"gdi32")
Не помогает :(

Re: Вопросы по С/С++ (СИ)

Добавлено: Вт июн 18, 2013 14:17:05
АндрейАвербах
Создал всю эту штуку как проект и о чудо! все заработало даже без подключения библиотеки!

Re: Вопросы по С/С++ (СИ)

Добавлено: Чт июн 20, 2013 11:26:32
Мikа
vitalik_1984 писал(а):
if(!PINC&0b00000001){
//тут все что нужно;}
Это будет значить проверку нулевого бита порта С, и выражение будет считаться истиной, если результат логического И будет нулём?