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

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

  1. verelex

    verelex New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    90
    censored
    не понял что ты хотел сказать, самому написать метод или он есть?
    сделал так:
    Код (Text):
    1. void CChildFrame::copy_list(LISTPAIRINTSTR *dest,LISTPAIRINTSTR *src)
    2. {
    3.     LISTPAIRINTSTR::iterator iter = src->begin();
    4.     for (int i=0; i<src->size(); i++)
    5.     {
    6.         dest->push_back(iter._Mynode()->_Myval);
    7.     }
    8. }
    может можно покрасивее (компактнее)?
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Код (Text):
    1. template <typename T>
    2. inline void copy_list(std::list<T> &dst, std::list<T> &src) {
    3.   dst = src;
    4. }
     
  3. verelex

    verelex New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    90
    cпacибo
     
  4. Vic

    Vic New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    75
    вечер добрый,
    не поможете ли уточнить следующий момент:
    "В СИ все аргументы передаются по значению. Это следует понимать так, что вызываемой функции посылаются значения ее аргументов во временных переменных, а не сами аргументы. "

    а если речь идет например о
    Код (Text):
    1. int main ()  {
    2.   ...
    3.   int a = 1, b = 2;
    4.   func (&a, &b);
    5.   ...              }
    6.  
    7. int func(int *pa, int* pb) { ... }
    то все изменения переменных *pa и *pb в func затронут переменные a и b в main()?? верно??
     
  5. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Vic
    Конечно.
     
  6. Vic

    Vic New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    75
    Booster
    благодарю
     
  7. disaster

    disaster New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2009
    Сообщения:
    12
    Доброе время суток.
    Код (Text):
    1. template <typename T>
    2. class B
    3. {
    4.         friend class T;
    5.         int c;
    6. };
    7.  
    8. class A
    9. {
    10.         B<A> b;
    11. public:
    12.         void foo()
    13.         {
    14.                 b.c = 1;
    15.         }
    16. };
    Выдаёт, что b.c недоступен. Кого тогда В считает своим другом и как сделать чтобы работало?
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    disaster
    Друзья аргументы шаблона это вроде не стандарт. Некоторые компиляторы поддерживают эту фичу в виде расширения (Comeau, VS 2008).
     
  9. n1kt0

    n1kt0 Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    160
    1) как отвязаться от main(){} ?
    просто когда я вручнуб линкеру говорю ентри поин и потом в коде:
    EntryPoint{}
    то все ок, но только когда внутри тела EntryPoint появится допустим printf(), то линкер начинает ругаться что нет _main. как это решить ?

    2)после GlobalAlloc & ReadFile как мне вывести весь массив прочитанных данных ? ну к примеру print'ом ?
    использую для компиляции vs6 & ide_radasm
     
  10. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    1)
    Код (Text):
    1. // cl /MD test.c
    2. #include <windows.h>
    3. #include <stdio.h>
    4. #pragma comment(linker, "/entry:entry")
    5. #pragma comment(linker, "/subsystem:console")
    6.  
    7. void entry() {
    8.   printf("test\n");
    9.   ExitProcess(0);
    10. }
    Так как инициализия CRT не происходит, может быть ахтунг. Может лучше точкой входа оставить mainCRTStartup? ;)

    2) printf в цикле от 0 и до размера буфера.
     
  11. n1kt0

    n1kt0 Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    160
    Код (Text):
    1. LINK /SUBSYSTEM:CONSOLE /RELEASE /VERSION:4.0 /LIBPATH:"D:\1\Microsoft Visual Studio\VC98\Lib" /OUT:"123.exe" "123.obj"
    2. Microsoft (R) Incremental Linker Version 6.00.8447
    3. Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
    4.  
    5. LIBC.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    6. 123.exe : fatal error LNK1120: 1 unresolved externals
     
  12. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    n1kt0
    до сих пор юзаешь шестёрку %)) - девятая (2008) студия компилит это нормально, правда только с ключём /MD, требующим наличия на машине MSVCR90.DLL (в 6 студии другая, не помню какая версия этой dll). А статическая линковка /MT этой библиотеки ищет _main, потому что он прописан в объектнике этой библиотеки.
    Или отказывайся от CRT совсем, юзай чистое АПИ: wsprintf, GetStdHandle(STD_INPUT_HANDLE / STD_OUTPUT_HANDLE), ReadFile, WriteFile.
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    n1kt0
    extern "C" int _cdecl main() { return 0; }
     
  14. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Great
    не вариант - с /MD работает и без этого, а с /MT компилится, но не работает R6030 - CRT not initialized
     
  15. n1kt0

    n1kt0 Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    160
    в 6 студии слова грита оказались верными:
    Код (Text):
    1. #include <stdio.h>
    2. #include <windows.h>
    3. extern "C" int _cdecl main() {
    4. printf("sdfsdfvsd");
    5. Sleep(9999900000);
    6. ExitProcess(NULL);
    7.  
    8.  return 0;
    9.  }
    т.е все собирается. Виват, Great, виват:)
    но мы не отвязались от main =(
     
  16. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Вопрос по W32.
    Создаю окно с tabcontrol и пытаюсь поместить на него закладки, которые имеются в виде диалогов в ресурсах.
    Код (Text):
    1. InitCommonControls();
    2. RECT rc;
    3. GetClientRect(hWnd,&rc);
    4. Tab = CreateWindow(WC_TABCONTROL,TEXT(""), WS_CHILD| WS_VISIBLE ,0,0,rc.right,rc.bottom,hWnd,0,hInst,0);
    5. TCITEM tc;
    6. tc.mask=TCIF_TEXT;
    7. tc.cchTextMax=64;
    8. tc.pszText = TEXT("Log");
    9. SendMessage(Tab,TCM_INSERTITEM,0,(LPARAM)&tc);
    10. CreateDialog(hInst,MAKEINTRESOURCE(IDD_LOGDLG),Tab,LogDlg);
    У диалога стили: WS_CHILD| WS_VISIBLE.
    Пробовал по разному(на форуме нашёл примеры и с SetWindowLong и с другим порядком SendMessage/CreateDialog).
    Диалог создаётся, но не на контроле, а сам по себе. Может какой-то стиль не указал нужный?!
    LOGDLG - простое окно с ListView.
     
  17. dtor

    dtor New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2009
    Сообщения:
    1
    посоветуйте либу для строк, а то размер объекта std::string = 28 байт, без учёта самой строки. слишком это расточительно, т.к. у меня будут большие массивы срок.
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    dtor
    Напиши своё. В стандартной 16 байт зарезервировано под маленькие строки.
     
  19. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    MFC'шная строка занимает 4 байта
     
  20. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    censored
    Супер оптимально, но по-хорошему надо хранить и длину.