Запитання з тегом «c»

C - мова програмування загального призначення, що використовується для системного програмування (ОС та вбудованих), бібліотек, ігор та крос-платформ. Цей тег слід використовувати із загальними питаннями, що стосуються мови C, визначеної стандартом ISO 9899 (остання версія, 9899: 2018, якщо інше не зазначено - також запити, пов’язані з версією тегів c89, c99, c11 тощо). C відрізняється від C ++, і він не повинен поєднуватися з тегом C ++ без раціональної причини.

3
Чому конверсія з рядка є постійною в "char *", діє в C, але недійсна в C ++
Стандарт C ++ 11 (ISO / IEC 14882: 2011) говорить § C.1.1: char* p = "abc"; // valid in C, invalid in C++ Для C ++ це нормально, оскільки вказівник на Stral Literal є шкідливим, оскільки будь-яка спроба змінити його призводить до збоїв. Але чому він дійсний у С? С …
163 c++  c  string  c++11  char 

6
Як отримати поточний каталог у програмі C?
Я роблю програму C, де мені потрібно отримати каталог, з якого програма запускається. Ця програма призначена для комп'ютерів UNIX. Я дивився на opendir()і telldir(), але telldir()повертає off_t (long int), так що це дійсно не допомагає мені. Як я можу отримати поточний шлях у рядку (масив char)?

1
Створіть .so файл із .c-файлу за допомогою командного рядка gcc
Я намагаюся створити привіт світовий проект для динамічних бібліотек Linux (файли .so). Отже, у мене є файл hello.c: #include <stdio.h> void hello() { printf("Hello world!\n"); } Як створити файл .so, який експортує hello(), використовуючи gcc з командного рядка?
162 c  linux  gcc  shared-libraries 

15
Як уникнути переповнення в expr. А Б В Г
Мені потрібно обчислити вираз, який виглядає так:, A*B - C*Dде їх типи: signed long long int A, B, C, D; кожне число може бути дійсно великим (не переповнюючи його тип). Хоча це A*Bможе спричинити переповнення, в той же час вираження A*B - C*Dможе бути дуже малим. Як я можу правильно …
161 c++  c  integer-overflow 

2
Чому в цьому коді C алфавіт розділений на кілька діапазонів?
У спеціальній бібліотеці я побачив реалізацію: inline int is_upper_alpha(char chValue) { if (((chValue >= 'A') && (chValue <= 'I')) || ((chValue >= 'J') && (chValue <= 'R')) || ((chValue >= 'S') && (chValue <= 'Z'))) return 1; return 0; } Це писанка або які переваги перед стандартним методом C / …
161 c++  c  character  toupper 

8
Строкові літерали: куди вони йдуть?
Мене цікавить, де виділяються / зберігаються рядкові літерали. Я знайшов один інтригуючий відповідь тут , кажучи: Визначення рядкового рядка фактично вбудовує дані в саму програму і не може бути змінено (деякі компілятори дозволяють це розумним трюком, не турбуйте). Але це стосувалося C ++, не кажучи вже про те, що він …

4
Чому при обчисленні середини масиву віддають перевагу start + (end - start) / 2 over (start + end) / 2?
Я бачив, як програмісти використовують формулу mid = start + (end - start) / 2 замість того, щоб використовувати більш просту формулу mid = (start + end) / 2 для пошуку середнього елемента в масиві чи списку. Для чого вони використовують колишню?
160 c  algorithm 


14
Найшвидший спосіб захоплення екрана в Windows
Я хочу написати програму скріншоу для платформи Windows, але не знаю, як захопити екран. Єдиний метод, про який я знаю, - це використовувати GDI, але мені цікаво, чи існують інші способи зробити це, і, якщо вони є, які мають найменші витрати? Швидкість - пріоритет. Програма екранізації буде для запису ігрових …
159 c++  c  windows 

13
Що насправді означає «Пам'ять, виділена під час компіляції»?
У мовах програмування, таких як C і C ++, люди часто посилаються на статичне та динамічне розподіл пам'яті. Я розумію це поняття, але фраза "Вся пам'ять була виділена (зарезервована) під час компіляції" завжди мене бентежить. Компіляція, наскільки я розумію, перетворює код C / C ++ високого рівня в машинну мову …

14
Неможливо компілювати програму C на Mac після оновлення до Mojave
Я використовував команду gcc на терміналі для компіляції програм C, але раптом після оновлення ОС моєї Mac (до macOS 10.14 Mojave та XCode 10.0) я почав отримувати повідомлення: test.c:8:10: fatal error: stdio.h: No such file or directory #include <stdio.h> ^~~~~~~~~ compilation terminated. У мене вже встановлено gcc, оскільки я можу …
159 c  macos  gcc  terminal 

1
Чому в книзі "Мова програмування на С" йдеться про те, що я повинен відкинути малок?
Сьогодні я досяг сторінки 167 з Мова програмування C (друге видання Брайан У. Керніган & Dennis M. Ritchie) і виявив , що автор говорить , що я повинен кинути malloc. Ось частина книги: 7.8.5 Управління зберіганням Функції malloc і calloc динамічно отримують блоки пам'яті. void *malloc(size_t n) повертає вказівник на …

3
Декларація функції не є прототипом
У мене створена бібліотека, mylib.c: #include <mylib.h> int testlib() { printf("Hello world\n"); return (0); } mylib.h: #include <stdio.h> extern int testlib(); У своїй програмі я спробував викликати цю функцію бібліотеки: myprogram.c: #include <mylib.h> int main (int argc, char *argv[]) { testlib(); return (0); } При спробі компілювати цю програму я …
158 c  gcc 


9
Чому відтікання з кінця недійсної функції без повернення значення не створює помилки компілятора?
З тих пір, як я багато років тому зрозумів, що це не створює помилок за замовчуванням (принаймні в GCC), я завжди цікавився чому? Я розумію, що ви можете видавати прапори компілятора для створення попередження, але чи не завжди це має бути помилка? Чому має значення недійсна функція, що не повертає …
158 c++  c  gcc  g++ 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.