Тут размещают свои топики новички в С/С++.

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

  1. tmp_2008

    tmp_2008 New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    7
    Всем привет.
    Такая задача:
    В Visual C++ 6.0 создаю мастером приложений MFC-приложение. Как можно размещать элементы управления не в диалоговом окне а в главном? Ну, в том, что с белым фоном, стандартным меню и т.т.(не знаю, как называется). И если нельзя, то как сделать диалоговое основным?
    Спасибо.
     
  2. slayer

    slayer New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2004
    Сообщения:
    23
    tmp_2008
    Создать проект с Application Type - Dialog Based. Будет диалоговое окно основным. Если другой тип приложения, можно динамически создавать элементы управления, но типы single document и multiple обычно используются для других целей. Прочитай любую книжку по visual studio и mfc
     
  3. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    траблы с шаблонными классами. пишу:
    Код (Text):
    1. #include "CCyclicArray.h"
    2. #include "stdafx.h"
    3.  
    4. template<class T>
    5. CCyclicArray<T>::CCyclicArray(size_t Size)
    6. {     //  реализация конструктора моего класса
    7.       // ....
    8. }
    конпелятор показывает на строчку "CCyclicArray<T>::CCyclicArray(size_t Size)" и говорит
    error C2143: syntax error : missing ';' before '<'

    чезанафиг?
    (проект МFC)
     
  4. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    386
    Green_DiCk
    Ну во-первых реализация методов шаблонного класса (за исключением шаблонных специализаций) обычно должна находиться в заголовочном файле
    А у тебя скорее всего компилятор не подцепил описание класса CCyclicArray - проверь еще раз хедер
     
  5. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    scf
    >реализация методов шаблонного класса (за исключением шаблонных специализаций) обычно должна находиться в заголовочном файле

    Опа.. Это зачем это?

    >А у тебя скорее всего компилятор не подцепил описание класса CCyclicArray - проверь еще раз хедер

    Да подцепил вроде. "::" когда ставишь, подсказка вылезает.
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Green_DiCk
    Пля поставь ; после объявления шаблона.
     
  7. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    87.118.102.154
    Booster
    Ухахха! Твой пост №666. Надо было написать что нить зловещее))).

    а пунктуацию я соблюдаю. не совсем дурак.
    CCyclicArray.h:
    Код (Text):
    1. template<class T>
    2. class CCyclicArray
    3. {  
    4. private:
    5.     struct cycl_array
    6.     {
    7.         cycl_array * pNext;
    8.         T element;
    9.     } * pArray;
    10.     size_t ArraySize;
    11.     DWORD * pWriteIndexes;
    12.     DWORD numOfWriteThreads;
    13.     DWORD ReadIndex;
    14.     DWORD WaitingTime;
    15.     DWORD GetNumOfFreePositions(DWORD ThreadNumber, bool is_read_thread = false);
    16. protected:
    17.     CCyclicArray(size_t Size, DWORD numOfWriters);
    18.     CCyclicArray(size_t Size, T & element, DWORD numOfWriters);
    19.     ~CCyclicArray();
    20. public:
    21.     T & GetElement(DWORD index);
    22.     int WriteNext(DWORD ThreadNumber, T & element);
    23.     int SetIndex(DWORD ThreadNumber, DWORD NewValue);
    24.     int MoveIndex(DWORD ThreadNumber, DWORD numPositions);
    25. }[b];[/b]
     
  8. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    CCyclicArray<T>::CCyclicArray<T>
     
  9. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    Как на сях выполнить арифметический сдвиг операнда ?

    Т.е. << и >> это shl и shr соответственно
    А как сделать rol / ror ?
     
  10. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Magnum
    __asm не подойдёт?
     
  11. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    twgt
    у самого пока макрос на асме
    думал, может встроенное что-то есть. Как-никак арифметический сдвиг... не поверю, что без асма никак. А в 64х как тогда?? Отдельный объектник только ради 1го макроса?
     
  12. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Magnum
    Наверное что-то вроде
    Код (Text):
    1. b=(a<<1) || ((a & 0x80000000)>>31)
    надо делать.
     
  13. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Код (Text):
    1. #define WORD_LENGTH (8*sizeof(value))
    2. inline int rol(unsigned value, int places)
    3. {
    4.   return (value<<places)|(value>>(WORD_LENGTH-places);
    5. }
    6.  
    7. inline int ror(unsigned int value, int places)
    8. {
    9.   return (value>>places)|(value<<WORD_LENGTH-places);
    10. }
    11. #undef WORD_LENGTH
     
  14. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    http://msdn.microsoft.com/en-us/library/5cc576c4.aspx
     
  15. EvilCoder

    EvilCoder New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2006
    Сообщения:
    30
    Компилятор VC 6.0
    Необходимо получить минимальный размер кода на выходе. Делаю так:
    Код (Text):
    1. #pragma pack(push,1)
    2. #pragma comment(linker, "/SUBSYSTEM:WINDOWS")
    3. #pragma comment(linker, "/ENTRY:main /ALIGN:0x200 ")
    4. #pragma comment(linker, "/FILEALIGN:512 /MERGE:.rdata=.text /SECTION:.text, EWR")
    На выходе получается только одна объединённая секция .text, и с этим возникает много проблем. Мне нужно чтоб были все стандартные секции и импорта и данных, но! чтоб при этом в секции кода не было ничего того что я не писал. (надеюсь вы меня поняли)
    И еще, если есть у кого нить конкретная ссылка на хелп к опциям vc 6.0 линкера и компилера буду очень признателен.
    Заранее благодарю.
     
  16. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    386
    Зачем /SECTION:.text ?
    просто мерджишь все секции кроме .rsrc в .text и все будет работать, ее флаги по умолчанию позволяют EWR
    А если нужны вообще все стандартные секции, то нафига мерджить? их по дефолту 4 штуки - .code .rdata .data .rsrc, импорт обычно в .rdata
    Код (Text):
    1. #pragma pack(push,1)
    2. #pragma comment(linker, "/SUBSYSTEM:WINDOWS")
    3. #pragma comment(linker, "/ENTRY:main /ALIGN:0x200 ")
    4. #pragma comment(linker, "/FILEALIGN:512 /MERGE:.rdata=.text /MERGE:.data=.text")
    5. #include <windows.h>
    6. void main() {
    7.     MessageBoxA(0, "Hello, World!", "Title", MB_ICONINFORMATION);
    8. }
    на выходе 1-кб екзешник, как и заказывали
    Насчет проблем - необходимо помнить, что С RTL c таким подходом нормально работать не будет.
    Документация по опциям линкера есть в MSDN98, который поставлялся с MSVC60. У меня, к сожалению, его нет - ищи.
     
  17. dotzen

    dotzen New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    10
    Вот пример, мне надо чтоб он узнавал длину переменой а.

    Вот моя попытка, а как мне зделать правильно?

    #include <stdio.h>
    #include <conio.h>
    #include <string.h>

    main()
    {
    int n,k;
    float a[10];
    char *b;

    for(n=0;n<=10;n++)
    {
    scanf("%f",&a[n]);
    *b=a[n];
    k=strlen(*b);
    if (k==2) {printf("%f\n",a[n]);}
    }
    }

    15 C:\Faculty\PC\ex.c [Warning] passing arg 1 of `strlen' makes pointer from integer without a cast
     
  18. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    ничего не понятно. у тебя массив float значений. о каких длинах переменных ты говоришь? strlen возвращает длину строки.

    и еще:
    неверно. у тебя будет вылет за границы массива a.
    правильно будет
    Код (Text):
    1. for (int n = 0; n < 10; ++n){
    2.  //TODO
    3. }
     
  19. dotzen

    dotzen New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2008
    Сообщения:
    10
    к примеру
    а=10 ,длина к=2
    а=10.1 ,длина к=4
    а=1032 ,длина к=4 ит.п.

    а должен быть имено флоат

    это имхо правильно.
     
  20. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    dotzen
    это наз-ся кол-во разрядов у числа. но никак не длина строки.
    если для тебя вылет за границы массива - правильно, то я умываю руки.