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

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

4
Чому повертати NULL з main ()?
Іноді я бачу кодери, які використовують NULLяк повернене значення main()в програмах C і C ++, наприклад щось подібне: #include <stdio.h> int main() { printf("HelloWorld!"); return NULL; } Коли я компілюю цей `код з gcc, я отримую попередження: попередження: return робить ціле число від вказівника без виведення [-Wint-convert] що розумно, оскільки …
10 c++  c  null  return  return-value 

2
Чи справді корисний префетер L2 HW?
Я перебуваю на Whiskey Lake i7-8565U і аналізую лічильники перф і час для копіювання 512 Кб даних (вдвічі більше, ніж розмір кешу L2) і зіткнувся з деяким непорозумінням щодо роботи префедера L2 HW. У посібнику з Intel Vol.4 MSR є MSR, 0x1A4біт 0 є для керування префедером L2 HW (1 …

1
MATLAB більше не вивантажує MEX-файли після оновлення до macOS Mojave
У MATLAB clear mexвивантажує всі MEX-файли з пам'яті (якщо вони не заблоковані). У попередніх версіях macOS мені вдалося перекомпілювати MEX-файл і запустити модифіковану версію без перезавантаження MATLAB, просто видавши clear mexкоманду. Це неможливо в Mojave. Наприклад, візьміть цей тривіальний MEX-файл ( get_data_pointer.c): #include "mex.h" void mexFunction( int nlhs, mxArray *plhs[], …

5
Динамічне посилання - Linux Vs. Windows
Під Windows, коли я компілюю код C / C ++ у проекті DLL в MSVC, я отримую 2 файли: MyDll.dll MyDll.lib де, наскільки я розумію, MyDll.libміститься якась таблиця вказівників, що вказує на розташування функцій у dll. При використанні цього dll, скажімо, у файлі exe, MyDll.libвін вбудовується у файл exe під …

4
Як масиви символів повинні використовуватися як рядки?
Я розумію, що рядки в C - це просто масиви символів. Тому я спробував наступний код, але він дає дивні результати, такі як вихід сміття або збої програми: #include <stdio.h> int main (void) { char str [5] = "hello"; puts(str); } Чому це не працює? Він складено чисто з gcc …

2
Як перевірити, чи недійсний покажчик (void *) є одним із двох типів даних?
Я пишу функцію, де я хотів би прийняти 2 types параметрів. A string(char *) A, structureде буде n кількість елементів. І для досягнення цього я думаю використовувати простий void *тип параметра. Але я не знаю, як перевірити, чи є параметр того чи іншого типу безпечно.
10 c  gcc  types  clang 

2
Що станеться, якщо невизначена поведінка C ++ відповідає поведінці, визначеній C?
У мене є *.cppфайл, який я компілюю за допомогою C ++ (не компілятор C). Функція, що містить, покладається на заголовок (див. Останній рядок), який, здається, визначений в C (будь ласка, виправте, якщо я помиляюся!), Але не в C ++ для цього спеціального типу. [...] C++ code [...] struct sockaddr_in sa …

3
У чому специфіка визначення рядка в C?
Я повинен відповісти на запитання домашнього завдання на одному з моїх занять. Зокрема, я повинен сказати, чи вважаються певні масиви на C рядками чи ні. На основі цієї статті ( https://www.geeksforgeeks.org/strings-in-c-2/ ) я знаю, що рядки - це масив символів із нульовим термінатором в кінці. Моя головна повірка - це …

1
Перетворення в недійсні ** на різних компіляторах
Я використовував наступний код через різні компілятори: int main() { float **a; void **b; b = a; } З того, що я був в змозі зібрати, void **це НЕ загальний покажчик , який означає , що будь-яке перетворення з іншого покажчика не повинен становити принаймні , кинути попередження. Однак ось …
9 c++  c  cuda 

1
Запобігайте процесу відкриття нового дескриптора файлів у Linux, але дозволяйте отримувати дескриптори файлів через сокети
Зараз я працюю над проектом, де у мене є батьківський процес, який встановлює socketpair, forks, а потім використовує цей socketpair для спілкування. Якщо дитина хоче відкрити файл (або будь-який інший ресурс на основі дескриптора файлу), дитина повинна завжди перейти до батьків, запитувати ресурс і отримати fdвідправлене через socketpair. Крім того, …
9 c  linux  system-calls 

1
Чи може вказівник на неповний тип бути неповним?
Може int (*)[]бути неповним типом? C 2018 6.2.5 1 каже: У різних точках в одиниці перекладу тип об'єкта може бути неповним (бракує достатньої інформації для визначення розміру об'єктів цього типу) або повним (має достатню інформацію). Таким чином, здається, що якщо розмір типу відомий, тип буде повним. 6.2.6.1 28 вказується, що …

3
Чому LLVM виділяє надлишкову змінну?
Ось простий файл C із визначенням enum та mainфункцією: enum days {MON, TUE, WED, THU}; int main() { enum days d; d = WED; return 0; } Він транслюється в наступний ІК LLVM: define dso_local i32 @main() #0 { %1 = alloca i32, align 4 %2 = alloca i32, align …
9 c  llvm  llvm-codegen 

1
Неозначено: CHAR_WIDTH
Я отримую помилку, ‘CHAR_WIDTH’ undeclared коли намагаюся скласти цю просту програму: #include <stdio.h> #include <limits.h> int main() { printf("CHAR_BIT = %d\n", CHAR_BIT); printf("CHAR_WIDTH = %d\n", CHAR_WIDTH); return (0); } з gcc ./show_char_width.c -o show_char_width та gcc: GNU C17 (Ubuntu 8.3.0-6ubuntu1) версія 8.3.0 (x86_64-linux-gnu), складений GNU C версії 8.3.0, GMP версії …
9 c  gcc 

1
"Незаконна інструкція по апаратному забезпеченню" з дуже простого коду
Досліджуючи сумнівну претензію , я написав цю маленьку тестову програмуnoway.c int proveit() { unsigned int n = 0; while (1) n++; return 0; } int main() { proveit(); return 0; } Тестуючи це, я отримую: $ clang -O noway.c $ ./a.out zsh: illegal hardware instruction ./a.out Ват. Якщо я компілюю …

2
Що таке інкапсуляція часу компіляції в C?
Коли я досліджував переваги C над C ++, я натрапив на цей абзац: Стандартний спосіб для інкапсуляції на C - це пересилання оголошень структури та надання доступу до її даних лише через функції. Цей метод також створює інкапсуляцію часу компіляції. Час інкапсуляції компіляції дозволяє нам змінювати члени структур даних без …
9 c 

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