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

C ++ - мова програмування загального призначення. Спочатку він був розроблений як розширення до C і має подібний синтаксис, але зараз це зовсім інша мова. Використовуйте цей тег для запитань про код (який потрібно) зібрати за допомогою компілятора C ++. Використовуйте тег, що стосується версії, для питань, пов’язаних із конкретною стандартною редакцією [C ++ 11], [C ++ 14], [C ++ 17] або [C ++ 20] тощо.



9
"Використання простору імен" у заголовках c ++
На всіх наших курсах c ++ всі викладачі завжди кладуть using namespace std;відразу після #includes у свої .hфайли. Мені це здається небезпечним з того часу, включивши цей заголовок в іншу програму, я отримаю імпортоване ім’я до моєї програми, можливо, не усвідомлюючи, не маючи намір чи бажаючи цього (включення заголовка може …


20
Як легко зіставити c ++ перерахунки на рядки
У деяких файлах заголовків бібліотеки, які я використовую, у мене є маса типів перерахувань, і я хочу мати спосіб перетворення значень enum в рядки користувача - і навпаки. RTTI не зробить це для мене, тому що "рядки користувачів" повинні бути трохи читабельнішими, ніж перерахування. Рішення грубої сили було б купою …
119 c++  templates  enums 

1
Функція шаблону всередині класу шаблонів
У мене є цей код: template <class T> class MyClass { public: template <class U> void foo() { U a; a.invoke(); } }; Я хочу це у такій формі: template <class T> class MyClass { public: template <class U> void foo(); }; template <class T> /* ????? */ void MyClass<T>::foo() …
119 c++  templates 

7
Як компілювати для Windows в Linux за допомогою gcc / g ++?
Я написав деякі ефекти в C ++ (g ++), використовуючи freeglut в Linux, і я компілюю їх g++ -Wall -lglut part8.cpp -o part8 Тож мені було цікаво, чи можна за допомогою g ++ зробити статичні компільовані файли Windows, які містять все необхідне? У мене немає Windows, тому було б дуже …
119 c++  opengl  gcc  glut  freeglut 

1
Який ідіоматичний спосіб у CMAKE додати параметр компілятора -fPIC?
Я натрапив щонайменше на 3 способи це зробити, і мені цікаво, який це ідіоматичний шлях. Це потрібно зробити майже універсально для будь-якої статичної бібліотеки. Я здивований, що генератор Makefile в CMake не автоматично додає це до статичних бібліотек. (якщо я чогось не пропускаю?) target_compile_options(myLib PRIVATE -fPIC) add_compile_options(-fPIC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic") …
119 c++  c  cmake 

30
Як покращити логіку, щоб перевірити, чи відповідають 4 булеві значення деяким випадкам
У мене є чотири boolзначення: bool bValue1; bool bValue2; bool bValue3; bool bValue4; Прийнятні значення: Scenario 1 | Scenario 2 | Scenario 3 bValue1: true | true | true bValue2: true | true | false bValue3: true | true | false bValue4: true | false | false Наприклад, такий сценарій …
118 c++  if-statement 

15
Чому покажчики за замовчуванням не ініціалізуються з NULL?
Чи може хтось пояснити, чому покажчики не ініціалізуються NULL? Приклад: void test(){ char *buf; if (!buf) // whatever } Програма не входитиме всередину if, тому що bufце не нуль. Мені хотілося б знати, чому в будь-якому випадку нам потрібна змінна із кошиком, спеціально вказівники, що адресують кошик на пам'яті?

6
Виявити, чи stdin є терміналом або трубою?
Коли я виконую " python" з терміналу без аргументів, він відкриває інтерактивну оболонку Python. Коли я виконую " cat | python" з терміналу, він не запускає інтерактивний режим. Якось, не отримуючи жодного вводу, він виявив, що він підключений до труби. Як я можу зробити подібне виявлення в C або C …
118 c++  c  qt  pipe  stdin 

9
Наскільки далеко може пройти витік пам'яті?
Я багато разів стикався з витоком пам'яті. Зазвичай, коли я - mallocніби завтра немає, або звисаю FILE *, як брудна білизна. Я взагалі припускаю (читайте: відчайдушно сподіваюся), що вся пам'ять очищається принаймні, коли програма припиняється. Чи бувають ситуації, коли просочена пам'ять не буде збиратися після завершення роботи програми або збоїв? …
118 c++  c  memory  memory-leaks 

9
Як я отримав значення, що перевищує 8 біт, з 8-бітного цілого числа?
Я відстежив надзвичайно неприємного помилку, що ховався за цією маленькою дорогоцінною каменем. Мені відомо, що за специфікацією C ++ підписані переповнення є невизначеною поведінкою, але лише тоді, коли переповнення виникає, коли значення розширюється на бітову ширину sizeof(int). Як я розумію, збільшення природи charніколи не повинно бути визначеним поведінкою sizeof(char) < …

5
Як працює `is_base_of`?
Як працює наступний код? typedef char (&yes)[1]; typedef char (&no)[2]; template <typename B, typename D> struct Host { operator B*() const; operator D*(); }; template <typename B, typename D> struct is_base_of { template <typename T> static yes check(D*, T); static no check(B*, int); static const bool value = sizeof(check(Host<B,D>(), int())) …

8
Чи є підказка компілятора для GCC, щоб змусити передбачення гілок завжди йти певним шляхом?
Що стосується архітектур Intel, чи є спосіб доручити компілятору GCC генерувати код, який завжди змушує передбачити гілки певним чином у моєму коді? Чи підтримує апаратне забезпечення Intel це? Що з іншими компіляторами або апаратними засобами? Я б використав це в коді C ++, де мені відомий випадок, коли я хочу …

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