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

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

5
Досі доступний витік виявлений Valgrind
Усі функції, згадані в цьому блоці, - це функції бібліотеки. Як я можу виправити цей витік пам'яті? Він перерахований під категорією " Ще доступний ". (Є ще 4, які дуже схожі, але різної величини) 630 bytes in 1 blocks are still reachable in loss record 5 of 5 at 0x4004F1B: …
155 c  pthreads  valgrind 

7
Екзотична архітектура, про яку піклуються комітети зі стандартів
Я знаю, що стандарти C і C ++ залишають багато аспектів мовної реалізації лише тому, що якщо існує архітектура з іншими характеристиками, було б складно або неможливо написати стандартний відповідний компілятор для неї. Я знаю, що 40 років тому будь-який комп'ютер мав свою унікальну специфікацію. Однак я не знаю жодної …
154 c++  c  architecture 


6
NSLog назва методу за допомогою Objective-C в iPhone
В даний час ми визначаємо розширений механізм журналу для друку назви класу та номера рядка джерела журналу. #define NCLog(s, ...) NSLog(@"<%@:%d> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], \ __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__]) Наприклад, коли я дзвоню NCLog (@ "Hello world"); Вихід буде: <ApplicationDelegate:10>Hello world Тепер я також хочу вийти з назви методу, …

11
~ x + ~ y == ~ (x + y) завжди хибно?
Чи завжди цей код оцінюється як хибний? Обидві змінні - це два підписані доповнення. ~x + ~y == ~(x + y) Я відчуваю, що має бути якесь число, яке задовольняє умовам. Я спробував перевірки чисел між -5000і , 5000але ніколи не досягається рівність. Чи є спосіб скласти рівняння для пошуку …

9
У C, дужки виступають як рамка стека?
Якщо я створюю змінну в новому наборі фігурних дужок, чи змінна вискакує зі стека на фіксуючому дужку, чи вона зависає до кінця функції? Наприклад: void foo() { int c[100]; { int d[200]; } //code that takes a while return; } Чи dбуде займати пам’ять під час code that takes a …
153 c  memory  stack 

9
Що таке "зворотний дзвінок" в C і як вони реалізовані?
З читання, яке я провів, Core Audio багато в чому покладається на зворотні дзвінки (і на C ++, але це вже інша історія). Я розумію концепцію (свого роду) встановлення функції, яка викликається іншою функцією неодноразово для виконання завдання. Я просто не розумію, як вони налаштовані і як вони насправді працюють. …
153 c  callback 

14
Перевірка на покажчик NULL в C / C ++ [закрито]
Закрито . Це питання ґрунтується на думці . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 5 років тому . Удосконаліть це питання В останньому огляді коду дописувач намагається забезпечити виконання всіх NULLперевірок покажчиків …

13
Які засоби існують для функціонального програмування на C?
Останнім часом я багато думав про те, як займатися функціональним програмуванням на C (а не на C ++). Очевидно, що C є процедурною мовою і насправді не підтримує функціональне програмування. Чи є компілятори / розширення мови, які додають до мови деякі функціональні конструктивні програми? GCC надає вкладені функції як розширення …

13
Чи може num ++ бути атомним для 'int num'?
Загалом, для int num, num++(або ++num), в якості операції читання-модифікація-запис, це НЕ атомна . Але я часто бачу компілятори, наприклад GCC , генерують такий код для нього ( спробуйте тут ): Оскільки рядок 5, якому відповідає num++одна інструкція, чи можна зробити висновок про те, що в даному випадку num++ є …

8
Повернення масиву за допомогою C
Я відносно новий в C і мені потрібна допомога щодо методів роботи з масивами. Виходячи з програмування Java, я звик говорити int [] method(), щоб повернути масив. Однак я з’ясував, що з C ви повинні використовувати вказівники для масивів, коли ви повертаєте їх. Будучи новим програмістом, я насправді цього зовсім …
153 c  arrays  pointers  char 

2
Як двічі об'єднатися з препроцесором C і розширити макрос, як у "arg ## _ ## MACRO"?
Я намагаюся написати програму, де назви деяких функцій залежать від значення певної змінної макросу з таким макросом: #define VARIABLE 3 #define NAME(fun) fun ## _ ## VARIABLE int NAME(some_function)(int a); На жаль, макрос NAME()перетворює це на int some_function_VARIABLE(int a); а не int some_function_3(int a); тому це явно неправильний шлях для …

4
Що означає "#define _GNU_SOURCE"?
Сьогодні мені довелося скористатися basename()функцією, і man 3 basename( тут ) дав мені якесь дивне повідомлення: Примітки Існують дві різні версії базового імені () - версія POSIX, описана вище, і версія GNU , яку отримує після #define _GNU_SOURCE #include <string.h> Я цікаво , що це #define _GNU_SOURCEозначає: чи є він …
152 c  posix  gnu 

22
Помилка обробки коду С
Що ви вважаєте "найкращою практикою", коли мова йде про помилки, що відповідають помилкам у бібліотеці С. Я думав про два способи: Завжди повертайте код помилки. Типова функція виглядала б так: MYAPI_ERROR getObjectSize(MYAPIHandle h, int* returnedSize); Підхід завжди вказує на помилку: int getObjectSize(MYAPIHandle h, MYAPI_ERROR* returnedError); При використанні першого підходу можна …
152 c  error-handling 

7
Чи безпечно розбирати / proc / файл?
Я хочу розібратися /proc/net/tcp/, але це безпечно? Як мені відкривати та читати файли з, /proc/і не боятися, що якийсь інший процес (або сама ОС) буде змінювати його за той самий час?
152 c++  c  linux  unix  procfs 

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