c- все статьи тега ➜ страница 14


Безопасно ли возвращать struct в C или C++?

Я понимаю, что это не должно быть сделано, но я думаю, что видел примеры, которые делают что-то вроде этого (код Примечания не обязательно синтаксически корректен, но идея есть) typedef struct{ int a,b; }mystruct; и тогда вот функция mystruct func(int c, int d){ mystruct retval; retval.a = c; retval.b = d; return retval; } Я понял, что мы всегда должны возвращать указатель на структуру malloc'ed, если мы хотим сделать что-то подобное, но я уверен, что видел примеры, кот ...

минимальное значение типа double в C/с++

существует ли стандартный и / или переносимый способ представления наименьшего отрицательного значения (например, для использования отрицательной бесконечности) в программе C (++)? DBL_MIN в float.h-самый маленький положительное количество. ...

Инициализация / сброс структуры до нуля / null

struct x { char a[10]; char b[20]; int i; char *c; char *d[10]; }; я заполняю эту структуру, а затем использую значения. На следующей итерации, я хочу сбросить все поля 0 или null прежде чем я начну использовать его повторно. как я могу это сделать? Могу ли я использовать memset или мне придется пройти через все члены, а затем сделать это индивидуально? ...

gdb: "таблица символов не загружается"

Я продолжаю получать это сообщение об ошибке при попытке добавить точку останова в gdb. я использовал эти команды для компиляции: gcc -g main.c utmpib2.c -o main.o and: cc -g main.c utmpib2.c -o main.o and also: g++ -g main.c utmpib2.c -o main.o Я также попытался "- ggdb "вместо" - g", и я все еще получаю это сообщение об ошибке. затем я выполняю gdb: $gdb в gdb: (gdb)exec-file main.o (gdb)break 59 No symbol table is loaded. Use the "file" command. ...

Что такое CHAR бит?

цитирование кода для вычисления целого абсолютного значения (abs) без ветвления от http://graphics.stanford.edu / ~seander/bithacks.html: int v; // we want to find the absolute value of v unsigned int r; // the result goes here int const mask = v >> sizeof(int) * CHAR_BIT - 1; r = (v + mask) ^ mask; запатентованный вариант: r = (v ^ mask) - mask; что это CHAR_BIT и как его использовать? ...

С неблокирующий ввод с клавиатуры

Я пытаюсь написать программу на C (в Linux), которая циклически работает, пока пользователь не нажмет клавишу, но не должна требовать нажатия клавиши для продолжения каждого цикла. есть ли простой способ сделать это? Я думаю, что я мог бы сделать это с select() но это кажется много работы. кроме того, есть ли способ поймать ctrl -c нажатие клавиши для очистки перед закрытием программы вместо неблокирующего ввода-вывода? ...

Как избежать использования printf в обработчике сигналов?

С printf не является реентерабельным, он не должен быть безопасным для использования в обработчике сигналов. Но я видел много примеров кодов, которые использует printf этот путь. поэтому мой вопрос: когда нам нужно избегать использования printf в обработчике сигнала, и есть рекомендуемая замена? ...

'uint32 t' идентификатор не найден ошибка

я переношу код из Linux C в Visual C++ для windows. Visual C++ не знает #include <stdint.h> Так что я прокомментировал это. позже, я нашел много этих 'uint32_t': identifier not found ошибки. Как это можно решить? ...

Как создать Makefile для проектов C с подкаталогами SRC, OBJ и BIN?

несколько месяцев назад я придумал следующие общие Makefile для школьных заданий: # ------------------------------------------------ # Generic Makefile # # Author: [email protected] # Date : 2010-11-05 # # Changelog : # 0.01 - first version # ------------------------------------------------ # project name (generate executable with this name) TARGET = projectname CC = gcc -std=c99 -c # compiling flags here CFLAGS = -Wall -I. LINKER = gcc -o # linking flags here LFLAGS = ...

С строгой типизацией?

цитата Википедия: два широко используемых языка, которые поддержка многих видов неявных преобразования C и C++, и это иногда утверждали, что это слабо типизированные языки. Однако, другие утверждают, что эти языки поместите достаточно ограничений на то, как операнды различных типов могут быть смешанный, что эти два следует рассматривать как сильно типизированные языки. есть ли более точные ответ? ...

Как использовать glOrtho () в OpenGL?

Я не могу понять использование glOrtho. Может кто-нибудь объяснить для чего он используется? используется ли он для установки диапазона X Y и Z координат предела? glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); это означает, что диапазон x, y и z составляет от -1 до 1? ...

Что же такое правило" как если бы"?

Как говорится в названии, Что такое правило" как если бы"? типичный ответ, который можно было бы получить: правило, которое позволяет любые и все преобразования кода, которые не изменяют наблюдаемое поведение программы время от времени мы продолжаем получать поведение от определенных реализаций, которые приписываются этому правилу. Много раз неправильно. Итак,что же это за правило. В стандарте это правило четко не упоминается как раздел или абзац, так что же именно подпадает под сфер ...

В C можно ли разбить длинный оператор printf на несколько строк?

у меня есть следующее заявление: printf("name: %stargs: %stvalue %dtarraysize %dn", sp->name, sp->args, sp->value, sp->arraysize); Я хочу разбить его. Я попробовал следующее, но это не работает. printf("name: %st args: %st value %dt arraysize %dn", sp->name, sp->args, sp->value, sp->arraysize); Как я могу его разбить? ...

Как работает библиотека импорта? Подробности?

Я знаю, что это может показаться довольно простым для гиков. Но я хочу, чтобы все было предельно ясно. когда я хочу использовать Win32 DLL, обычно я просто вызываю API, такие как LoadLibrary() и GetProcAdderss(). Но в последнее время я развиваюсь с DirectX9, и мне нужно добавить d3d9.Либ,d3dx9.Либ, etc файлы. Я слышал достаточно, что LIB для статического связывания и DLL для динамического связывания. Итак, мое текущее понимание заключается в том, что LIB содержит реализацию методов и статичес ...

Что такое vdso и vsyscall?

Я sudo cat /proc/1/maps -vv Я пытаюсь разобраться в выводе.Я вижу, что многие общие библиотеки сопоставляются с сегментом сопоставления памяти, как и ожидалось. 7f3c00137000-7f3c00179000 r-xp 00000000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00179000-7f3c00379000 ---p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00379000-7f3c0037a000 r--p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3 ...

Почему вы должны использовать strncpy вместо strcpy?

Edit: я добавил источник для примера. я наткнулся на : char source[MAX] = "123456789"; char source1[MAX] = "123456789"; char destination[MAX] = "abcdefg"; char destination1[MAX] = "abcdefg"; char *return_string; int index = 5; /* This is how strcpy works */ printf("destination is originally = '%s'n", destination); return_string = strcpy(destination, source); printf("after strcpy, dest becomes '%s'nn", destination); /* This is how strncpy works */ printf( "destination1 is originally = '%s' ...

В C, как я должен прочитать текстовый файл и распечатать все строки

у меня есть текстовый файл с именем test.txt Я хочу написать программу на C, которая может прочитать этот файл и распечатать содержимое на консоль (предположим, что файл содержит только текст ASCII). Я не знаю, как получить размер моей строковой переменной. Вот так: char str[999]; FILE * file; file = fopen( "test.txt" , "r"); if (file) { while (fscanf(file, "%s", str)!=EOF) printf("%s",str); fclose(file); } в размере 999 не работает, потому что строка, возвращенная fscanf мо ...

Как на самом деле работает fread?

декларация fread выглядит следующим образом: size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); вопрос: есть ли разница в производительности чтения двух таких вызовов fread: char a[1000]; fread(a, 1, 1000, stdin); fread(a, 1000, 1, stdin); будет ли он читать 1000 байт сразу каждый раз? ...

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

Я написал программу C, которая принимает целочисленный ввод от пользователя, который используется как размер целочисленного массива, и с помощью этого значения он объявляет массив заданного размера, и я подтверждаю это, проверяя размер массива. код: #include <stdio.h> int main(int argc, char const *argv[]) { int n; scanf("%d",&n); int k[n]; printf("%ld",sizeof(k)); return 0; } и на удивление это правильно! Программа способна создать массив нужного размера. Но вс ...

Как скомпилировать для OS X в Linux или Windows?

Я хотел бы перенести мои приложения C / C++ в OS X. У меня нет Mac, но у меня есть Linux и Windows. Есть ли инструмент для этого? ...