Ответы пользователя по тегу C
  • #Define TRUE FALSE. Что произойдёт?

    @skyazimuth
    Равносильно тому, что после этой строки в текстовом редакторе выполнить операцию "найти и заменить целое слово с учётом регистра" TRUE на FALSE. Скомпилируется ли это, какие последствия будут - зависит от конкретного текста программы.
    Если в тексте нигде не встречается TRUE, то абсолютно ничего не изменится. Кстати, если встречается true, True, tRuE и тому подобное - тоже ничего не изменится. В некоторых случаях может выдать ошибку или предупреждение. А может и скомпилироваться и работать, как задумано или не так как задумано.
    Ответ написан
  • Можно ли запустить программу на языке C в операционной системе FreeDOS или MSDOS?

    @skyazimuth
    Да на такой машине вполне пойдет WinXP или современный этому компьютеру Linux :) DOS'у в норме, без расширений все равно надо только 1Мб памяти.
    Но если уж хочется именно DOS, можно найти Turbo C, от 1-й версии, вплоть до, если не ошибаюсь, Borland C++ 3.1 Вроде бы правопреемники выложили что-то из этого в свободный доступ.
    Эх, сегменты, модели памяти, как вспомню... :)
    Ответ написан
    Комментировать
  • Что находится в .text секции?

    @skyazimuth
    gcc main.c -Wl,-Map=main.map
    В main.map будет видно что линковщик положил в .text
    Ответ написан
    Комментировать
  • Где в памяти располагаются переменные и массивы?

    @skyazimuth
    1 обычные неинициализированные переменные в функции размещаются на стеке. Если есть возможность, могут быть размещены в регистрах. При ключевом слове static размещается в bss. При ключевом слове const размещается в rodata. То же касается и массивов, разве что в регистрах вряд ли разместятся (хотя, мало ли какие архитектуры могут быть).
    2 глобальные неинициализированные массивы размещаются в bss, const - в rodata.
    5 массив будет храниться на стеке, при входе в функцию инициализироваться данными из rodata. Массивы неразрывные и однородные, его части не могут быть разного типа хранения. Тут тоже надо иметь в виду, что const будет лежать в rodata, static - в data
    4 как сказал, массив однородный и неразрывный, глобальный инициализированный будет весь в data.
    Ответ написан
    Комментировать
  • Как написать программу для вычисления арктангенса на Си?

    @skyazimuth
    Cordic подойдёт?
    https://ru.m.wikipedia.org/wiki/CORDIC
    Ответ написан
    Комментировать
  • Как писать GUI на C?

    @skyazimuth
    Например, https://ru.m.wikipedia.org/wiki/GTK Под Windows можно непосредственно на WinAPI, для небольших приложений не так сложно, кстати. Только непереносимо на другие ОС.
    Ответ написан
    Комментировать
  • Как в языке си вернуть пустой массив?

    @skyazimuth
    А что подразумеваете под "пустым массивом"?
    Ответ написан
    Комментировать
  • Чем это достигается?

    @skyazimuth
    Размер будет зависеть от опций компилятора. В основном это: уровень оптимизации, выкидывание неиспользуемых частей кода, наличие в исполняемом файле отладочной информации.
    Ответ написан
  • Как "забыть" переменную на c/c++?

    @skyazimuth
    Во-первых, переменные с модификатором static видны только в модуле в котором объявлены. Хотя, в общем случае, они будут физически храниться всю жизнь программы. Во-вторых, переменные, объявленные внутри блока живут только на время выполнения этого блока, кроме static внутри функции. Грубо говоря, все что внутри фигурных скобок только там и существует. Причем, блок можно создать и в нетипичных местах, например, case 0: {int i; break;} или вообще в произвольном месте функции. В-третьих, оптимизатор сам следит за тем, где используется переменная. И если он видит, что дальше в функции переменная не используется, то физически на ее месте в памяти может разместить другую. Но с точки зрения текста программы, конечно, она будет считаться видимой до конца блока.
    Ответ написан
    Комментировать
  • Можно ли реализовать графику на стандратных и системных библиотеках?

    @skyazimuth
    Можно начать с книжки Петцольд Ч. "Программирование для Windows 95". Основа справедлива и для современных Windows.
    Ответ написан
    Комментировать