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

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


10
Чому компілятори C і C ++ допускають довжину масивів у підписах функцій, коли вони ніколи не застосовуються?
Це те, що я виявив під час свого навчання: #include<iostream> using namespace std; int dis(char a[1]) { int length = strlen(a); char c = a[2]; return length; } int main() { char b[4] = "abc"; int c = dis(b); cout << c; return 0; } Тож у змінній int dis(char …
131 c++  c  arrays 

2
У режимі випуску поведінка коду не така, як очікувалося
Наступний код генерує різні результати в режимі налагодження та режимі випуску (використовуючи Visual Studio 2008): int _tmain(int argc, _TCHAR* argv[]) { for( int i = 0; i < 17; i++ ) { int result = i * 16; if( result > 255 ) { result = 255; } printf("i:%2d, result …

3
Чому оптимізований простий цикл, коли межа становить 959, але не 960?
Розглянемо цю просту петлю: float f(float x[]) { float p = 1.0; for (int i = 0; i < 959; i++) p += 1; return p; } Якщо ви компілюєте з gcc 7 (знімок) або clang (trunk), -march=core-avx2 -Ofastви отримаєте щось дуже схоже на. .LCPI0_0: .long 1148190720 # float 960 …
131 c  gcc  optimization  clang 

16
Як я можу кодувати (декодувати) base64 в C?
У мене є бінарні дані в непідписаній змінній char. Мені потрібно конвертувати їх у PEM base64 в c. Я заглянув у бібліотеку openssl, але я не зміг знайти жодної функції. Будь-який орган має якусь ідею?
131 c  base64 

4
перетворення від bool до int
Наскільки портативно це перетворення. Чи можу я бути впевнений, що обидва твердження проходять? int x = 4<5; assert(x==1); x = 4>5; assert(x==0); Не питайте, чому. Я знаю, що це некрасиво. Дякую.
131 c++  c  c99 

4
Які GCC включають каталоги за замовчуванням?
Коли я компілюю дуже простий вихідний файл з gcc, мені не потрібно вказувати шлях до стандартних файлів, таких як stdio або stdlib. Як GCC знає, як знайти ці файли? У нього /usr/includeшлях прокладений всередині, або він отримає шляхи від інших компонентів ОС?
131 c++  c  linux  gcc  include-path 

12
Чому C не має підписаних плавців?
Я знаю, питання видається дивним. Програмісти іноді занадто багато думають. Будь ласка, читайте далі ... У CI використання signedі unsignedцілих чисел багато. Мені подобається те, що компілятор попереджає мене, якщо я виконую такі речі, як присвоєння підписаного цілого числа непідписаній змінній. Я отримую попередження, якщо порівню підписані з непідписаними цілими …


14
Чому функції покажчиків та покажчиків даних несумісні в C / C ++?
Я читав, що перетворення покажчика функції на покажчик даних і навпаки працює на більшості платформ, але не гарантовано. Чому це так? Чи не повинні обидва бути просто адресами в основну пам'ять і тому бути сумісними?

17
"#Include" текстовий файл у програмі C як char []
Чи є спосіб включити весь текстовий файл як рядок у програму C під час компіляції? щось на зразок: file.txt: This is a little text file main.c: #include <stdio.h> int main(void) { #blackmagicinclude("file.txt", content) /* equiv: char[] content = "This is\na little\ntext file"; */ printf("%s", content); } отримання невеликої програми, яка …

5
Як зробити простий makefile для gcc в Linux?
У мене є три файли: program.c, program.hі headers.h. program.cвключає program.hі headers.h. Мені потрібно скомпілювати це в Linux за допомогою компілятора gcc . Я не впевнений, як це зробити. Netbeans створили один для мене, але він порожній.
130 c  gcc  makefile 

4
Чому sizeof (my_arr) [0] складається і дорівнює sizeof (my_arr [0])?
Чому цей код складається? _Static uint32_t my_arr[2]; _Static_assert(sizeof(my_arr) == 8, ""); _Static_assert(sizeof(my_arr[0]) == 4, ""); _Static_assert(sizeof(my_arr)[0] == 4, ""); Перші 2 твердження очевидно правильні, але я б очікував, що останній рядок не вдасться, оскільки я розумію, що sizeof()слід оцінювати до цілого літералу, який не може трактуватися як масив. Іншими словами, …
129 c  sizeof 

11
Отримання GDB для збереження списку точок прориву
Гаразд, інформаційний перерв перераховує точки перерви , але не у форматі, який би добре працював з повторним використанням їх за допомогою --command, як у цьому питанні . Чи має метод GDB знову скинути їх у файл, прийнятний для введення? Іноді під час сеансу налагодження необхідно перезапустити GDB після створення набору …
129 c++  c  debugging  gdb  breakpoints 

7
Про що нормалізується UTF-8?
Проект ICU (який також тепер має бібліотеку PHP ) містить класи, необхідні для нормалізації рядків UTF-8, щоб полегшити порівняння значень під час пошуку. Однак я намагаюся розібратися, що це означає для додатків. Наприклад, у яких випадках я хочу "Канонічну еквівалентність" замість "Еквівалентність сумісності" чи навпаки?

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