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

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

  1. EvilCoder

    EvilCoder New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2006
    Сообщения:
    30
    HLA - нет, это ведь всего лишь еще одна IDE с мощным препроцессором.. или я ошибаюсь? Я пользовался RadASM`ом.
    А вот по запросу "С--" гугл ничего не скзал... =(
     
  2. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Нихт ферштейн. Вы можете писать на любом С используя асм вставки где надо. Или компилить в асм. Или объектник на С, объектник на Асм Вообще обоснуйте зачем вам маленький компилер. Обычно маленькие компилеры дают код хуже.

    Тут речь не об оптимизации алгоритма. Просто С в маш код однозначно не переводится. Алгоритм перевода и называется оптимизацией.
    Я про это. То-есть вам нужен хорошо оптимизирующий по размеру компилер. Маленьких таких нет.


    Из бесплатных, пригодных для комм проектов взгляните на gcc и openwatcom.

    В openwatcom синтаксис wasm очень близок к синтаксису masm.

    В них есть но. Они совместимы только с собой и алгоритмы с них перенести просто будет проблематично.

    ошибаетесь. HLA и C-- это попытки создать язык ниже С/Pas но выше асм. За более чем 10 лет существования они не получили особого признания, хотя и живут.

    попробуйте "Cminusminus" или "sfinxC"

    Вообще-то еще есть препроцессоры. Скажем очень мощный препроцессор fasm. Вы можете написать препроцессор от себя, как внешнюю прогу. Если и тут вы не удовлетворитесь, возможно мы увидим новый замечательный язык.

    А чуть не забыл: специально для асмовцев не любящих писать много кода http://hiasm.spb.ru/

    Возможно я чего не понял.
    Пишите если что не так.

    ЗЫ Есть совсем маленькие Цэ (объектник ~60Kb), но качество кода у них никакое.
     
  3. EvilCoder

    EvilCoder New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2006
    Сообщения:
    30
    Наверное здесь я поторопился... Не важно маленький или большой.
    Значит нужен большой. =)
    GCC неет... не нравятся мне эти лишнией вызовы и встроенные функции.

    Вообще я начинаю думать, что это была глупая идея, переходить на Си. =/ просто мне синтаксис уже успел понравиться, а вот результат в дебагере нет. =(
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Оптимизацию пробовал включать? :)
     
  5. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    EvilCoder
    ???
    Это какие?
     
  6. EvilCoder

    EvilCoder New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2006
    Сообщения:
    30
    Ustus это те что вызываются из mcvcrt.dll
    Например макрос ZeroMemory, ну кто его просит вызывать этот memset, может я хочу RtlZeroMemory ---> а ее то в заголовочных файлах вообще нет =/ вот для меня это странно вроде функция из kernel32.dll нафиг ее вызывать откуда то еще? (я просто оочень далек от кроссплатформенности, хочу кодить чисто под Win32)

    IceStudent если чесно, я пока плохо во всем этом разбираюсь. поэтому и пришел, чтоб спросить у людей которые это точно знают и задал этот вопрос именно в топике для начинающих. Мне просто хотелось бы на Си видеть код без лишнего т.е. того чего нет в исходниках. Чистый код.

    На сколько я понял (отсюда, и вообще из поисков) меня должен удовлетворить VC 6.0 =) с включением спец. опциями, вот а теперь такой вопрос...
    1. Можно его (cl.exe) скачать без оболочки (IDE) чисто компилятор? и что меня ждет в этом случае
    2. Какие заголовочные файлы мне будут нужны? (стало быть те что идут с самим cl.exe) а допустим include из МАСМА или из того же MinGW не пойдут?
     
  7. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Ну тогда берите openwatcom - очень приятный компилер, много инструментов, много опций оптимизации, качественый код на выходе, проект стабильно развивается, приятная лицензия, понятные сорцы. На мой взгляд оптимальный выбор.

    А что за проблемы с gcc?

    Если вы будете работать по коду, вам придется перейти и на C, и на С++, и на жабу, и на перл с пхп, и даже на С# с VB. Вобщем изучайте F# - самая передовая технология. Писать почти не надо. И конкурентов не будет.
     
  8. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    EvilCoder
    So, so.
    Код (Text):
    1. // myrtl.h
    2. //
    3.  
    4. #ifdef RtlZeroMemory
    5. #undef RtlZeroMemory
    6. #endif
    7. extern "C" __declspec(dllimport)
    8. void __stdcall RtlZeroMemory(void*, size_t count);
    9.  
    10.  
    11. #ifdef ZeroMemory
    12. #undef ZeroMemory
    13. #endif
    14. #define ZeroMemory RtlZeroMemory
    15.  
    16. ...
    И включай последним инклудом в проект...
     
  9. EvilCoder

    EvilCoder New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2006
    Сообщения:
    30
    Ну про ZeroMemory это я для примера приве. =) спасибо большое.

    Ответьте пожалуйста на:
    1. Можно его (cl.exe) скачать без оболочки (IDE) чисто компилятор? и что меня ждет в этом случае
    2. Какие заголовочные файлы мне будут нужны? (стало быть те что идут с самим cl.exe) а допустим include из МАСМА или из того же MinGW не пойдут?
     
  10. twgt

    twgt New Member

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

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Как нужно выводить дробные числа?
    Код (Text):
    1. sprintf(str,"B1[1]=%4.3f B1[2]=%4.3f B1[3]=%4.3f",B1[0],B1[1],B1[2]);
    Выводится
    http://img90.imageshack.us/img90/117/floaterr1yr9.png
     
  12. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    twgt
    запустил в VC2005:
    Код (Text):
    1. char str[1000];
    2. sprintf(str, "B1[1]=%4.3f B1[2]=%4.3f B1[3]=%4.3f",1.344,2.44,5.5555);
    3. printf( "%s", str );
    Все правильно. Дело в чем-то другом.
     
  13. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Это именно sprintf так записывает, я тоже подставлял конкретные числа и всё равно тот же результат.
    Под OllyDbg смотрел, в стеке обычные дробные числа. Даже мыслей нет по эому поводу.
     
  14. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Может выложить кусок кода побольше?
     
  15. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    twgt
    sprintf из ntdll?
     
  16. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    censored
    Да

    Xerx
    Он идентичный
     
  17. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    twgt
    Может тогда проект целиком? Просто в коде все норм.
     
  18. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Xerx
    Весь не могу, там файлы с данными большие для моего гпрс'а
    Вот типичный кусок:
    Код (Text):
    1. double B1[3];
    2. ...
    3.     int N=size-1;
    4.     for(int i=0;i<3;i++) B1[i]=0.0;
    5.     for(int i=0;i<size;i++)
    6.     {
    7.         B1[0]+=U[i];
    8.         B1[1]+=V[i];
    9.         B1[2]+=W[i];
    10.     }
    11.    
    12.     sprintf(str,"B1[1]=%4.3f B1[2]=%4.3f B1[3]=%4.3f",B1[0],B1[1],B1[2]);
    13.     Log(str);
    14.  
    15. void Log(char* text)
    16. {
    17.     SendDlgItemMessage(hLog,IDC_LOG,LB_INSERTSTRING,-1,(LPARAM)text);
    18.     RtlZeroMemory(text,lstrlen(text));
    19. }
     
  19. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    twgt
    В ntdll.sprintf есть проблемы с отображение флоат-данных:
    Код (Text):
    1. #include <windows.h>
    2.  
    3. #include <stdio.h>
    4.  
    5. int main(){
    6.   char buf[4096];
    7.   int (__cdecl *x_sprintf)(char *, const char *, ...);
    8.   double val = 3.14159 * 10000000000000000;
    9.  
    10.   sprintf(buf, "%4.3f", val);
    11.   printf("%s\n", buf);
    12.  
    13.   *(DWORD*)&x_sprintf = (DWORD)GetProcAddress(GetModuleHandle("NTDLL.DLL"), "sprintf");
    14.   x_sprintf(buf, "%4.3f", val);
    15.   printf("%s\n", buf);
    16. }
    Cоветую поэкспериментировать с val и ощутить разницу
     
  20. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    censored
    Спасибо. А где есть sprintf нормальный? :)