Как использовать постоянную PI в C ++ -- c++ поле с участием trigonometry пол Связанный проблема

How to use the PI constant in C++


501
vote

проблема

русский

Я хочу использовать постоянные и тригонометрические функции PI в некоторой программе C ++. Я получаю тригонометрические функции с помощью <код> include <math.h> . Однако, похоже, нет определения PI в файле заголовка.

Как я могу получить PI, не определяя его вручную?

Английский оригинал

I want to use the PI constant and trigonometric functions in some C++ program. I get the trigonometric functions with include <math.h>. However, there doesn't seem to be a definition for PI in this header file.

How can I get PI without defining it manually?

</div
     
       
       

Список ответов

567
 
vote
vote
Лучший ответ
 

на некоторых (особенно более старых) платформах (см. Комментарии ниже) Вам может потребоваться

 <код> #define _USE_MATH_DEFINES   

а затем включите нужный файл заголовка:

 <код> #include <math.h>   

и значение PI может быть доступна через:

 <код> glutDisplayFunc()0  

в моем <код> glutDisplayFunc()1 (2014) определяется как:

 <код> glutDisplayFunc()2  

Но проверьте ваш <код> glutDisplayFunc()3 для дальше. Экстракт из «старого» <код> glutDisplayFunc()4 (в 2009 году):

 <код> glutDisplayFunc()5  

Однако:

  1. на новых платформах (по крайней мере, на моем 64 битах Ubuntu 14.04) Мне не нужно определять <код> glutDisplayFunc()6

  2. on (недавние) платформы linux Есть <код> glutDisplayFunc()7 значений, также предоставленные в виде расширения GNU:

     <код> glutDisplayFunc()8  
 

On some (especially older) platforms (see the comments below) you might need to

#define _USE_MATH_DEFINES 

and then include the necessary header file:

#include <math.h> 

and the value of pi can be accessed via:

M_PI 

In my math.h (2014) it is defined as:

# define M_PI           3.14159265358979323846  /* pi */ 

but check your math.h for more. An extract from the "old" math.h (in 2009):

/* Define _USE_MATH_DEFINES before including math.h to expose these macro  * definitions for common math constants.  These are placed under an #ifdef  * since these commonly-defined names are not part of the C/C++ standards.  */ 

However:

  1. on newer platforms (at least on my 64 bit Ubuntu 14.04) I do not need to define the _USE_MATH_DEFINES

  2. On (recent) Linux platforms there are long double values too provided as a GNU Extension:

    # define M_PIl          3.141592653589793238462643383279502884L /* pi */ 
</div
 
 
       
       
174
 
vote

pi может быть рассчитан как <код> glutDisplayFunc()9 . Вы можете рассчитать значение таким образом и кэшировать его.

 

Pi can be calculated as atan(1)*4. You could calculate the value this way and cache it.

</div
 
 
         
         
114
 
vote

Вы также можете использовать Boost, который определяет важные математические константы с максимальной точностью для запрошенного типа (I.E. Float VS Double).

 <код> GLUT_ELAPSED_TIME0  

Проверьте Усилить документацию для получения дополнительных примеров.

 

You could also use boost, which defines important math constants with maximum accuracy for the requested type (i.e. float vs double).

const double pi = boost::math::constants::pi<double>(); 

Check out the boost documentation for more examples.

</div
 
 
         
         
91
 
vote

Получить его в блоке FPU на чипме:

 <код> GLUT_ELAPSED_TIME1  
 

Get it from the FPU unit on chip instead:

double get_PI() {     double pi;     __asm     {         fldpi         fstp pi     }     return pi; }  double PI = get_PI(); 
</div
 
 
     
     
52
 
vote

<Сильные> C ++ 20 <Код> std::numbers::pi

Наконец, он прибыл: http://eel.is/c++draft/ Числа

main.cpp

 <код> #include <numbers> // std::numbers #include <iomanip> #include <iostream>  int main() {     std::cout << std::fixed << std::setprecision(20);     std::cout << "float       " << std::numbers::pi_v<float> << std::endl;     std::cout << "double      " << std::numbers::pi << std::endl;     std::cout << "long double " << std::numbers::pi_v<long double> << std::endl;     std::cout << "exact       " << "3.1415926535897932384626433" << std::endl; }   

Компиляция и запуска:

 <код> g++-10 -ggdb3 -O0 -std=c++20 -Wall -Wextra -pedantic -o main.out main.cpp ./main.out   

Выход:

 <код> float       3.14159274101257324219 double      3.14159265358979311600 long double 3.14159265358979323851 exact       3.1415926535897932384626433   

Испытано на Ubuntu 20.04 AMD64, GCC 10.2.0

Принятое предложение описывает:

5.0. «Заголовки» [Заголовки] В таблице [Tab: Cpp.library.Headers] необходимо добавить новый <код> <math> .

[...]

 <код> namespace std { namespace math {   template<typename T > inline constexpr T pi_v = unspecified;    inline constexpr double pi = pi_v<double>;   

Есть также <код> std::numbers::e конечно :-) Как рассчитать константу Эйлера или EULER, питание в C ++?

Эти константы используют функцию переменных шаблонов C ++ 14: C ++ 14 Переменные шаблоны: какова их цель? Любой пример использования?

В более ранних версиях черновика постоянная была под <код> std::math::pi : http://www.open-std.org/jtc1/s222/wg21/docs/papers/2019/p0631r7.pdf

 

C++20 std::numbers::pi

At last, it has arrived: http://eel.is/c++draft/numbers

main.cpp

#include <numbers> // std::numbers #include <iomanip> #include <iostream>  int main() {     std::cout << std::fixed << std::setprecision(20);     std::cout << "float       " << std::numbers::pi_v<float> << std::endl;     std::cout << "double      " << std::numbers::pi << std::endl;     std::cout << "long double " << std::numbers::pi_v<long double> << std::endl;     std::cout << "exact       " << "3.1415926535897932384626433" << std::endl; } 

Compile and run:

g++-10 -ggdb3 -O0 -std=c++20 -Wall -Wextra -pedantic -o main.out main.cpp ./main.out 

Output:

float       3.14159274101257324219 double      3.14159265358979311600 long double 3.14159265358979323851 exact       3.1415926535897932384626433 

Tested on Ubuntu 20.04 amd64, GCC 10.2.0

The accepted proposal describes:

5.0. "Headers" [headers] In the table [tab:cpp.library.headers], a new <math> header needs to be added.

[...]

namespace std { namespace math {   template<typename T > inline constexpr T pi_v = unspecified;    inline constexpr double pi = pi_v<double>; 

There is also a std::numbers::e of course :-) How to calculate Euler constant or Euler powered in C++?

These constants use the C++14 variable template feature: C++14 Variable Templates: what is their purpose? Any usage example?

In earlier versions of the draft, the constant was under std::math::pi: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0631r7.pdf

</div
 
 
   
   
51
 
vote

Я бы порекомендовал просто набрать в PI к точке, который вам нужен. Это не добавит время расчета к вашему исполнению, и он будет портативным без использования каких-либо заголовков или #defines. Расчет ACO или ATAN всегда дороже, чем использование предварительного значения.

 <код> const double PI  =3.141592653589793238463; const float  PI_F=3.14159265358979f;   
 

I would recommend just typing in pi to the precision you need. This would add no calculation time to your execution, and it would be portable without using any headers or #defines. Calculating acos or atan is always more expensive than using a precalculated value.

const double PI  =3.141592653589793238463; const float  PI_F=3.14159265358979f; 
</div
 
 
         
         
47
 
vote

, а не письмо

 <код> #define _USE_MATH_DEFINES   

Я бы порекомендовал использовать <код> #include <numbers> // std::numbers #include <iomanip> #include <iostream> int main() { std::cout << std::fixed << std::setprecision(20); std::cout << "float " << std::numbers::pi_v<float> << std::endl; std::cout << "double " << std::numbers::pi << std::endl; std::cout << "long double " << std::numbers::pi_v<long double> << std::endl; std::cout << "exact " << "3.1415926535897932384626433" << std::endl; } 0 или <код> #include <numbers> // std::numbers #include <iomanip> #include <iostream> int main() { std::cout << std::fixed << std::setprecision(20); std::cout << "float " << std::numbers::pi_v<float> << std::endl; std::cout << "double " << std::numbers::pi << std::endl; std::cout << "long double " << std::numbers::pi_v<long double> << std::endl; std::cout << "exact " << "3.1415926535897932384626433" << std::endl; } 1 в зависимости от вашего компилятора.

Таким образом, вы уверены, что даже в случае, если кто-то, включая заголовок, прежде чем делать (и без #define), у вас все равно будет константы вместо ошибки непонятной компилятора, которую вы возьмете возраст, чтобы отслеживать. < / P >.

 

Rather than writing

#define _USE_MATH_DEFINES 

I would recommend using -D_USE_MATH_DEFINES or /D_USE_MATH_DEFINES depending on your compiler.

This way you are assured that even in the event of someone including the header before you do (and without the #define) you will still have the constants instead of an obscure compiler error that you will take ages to track down.

</div
 
 
       
       
40
 
vote

Поскольку официальная стандартная библиотека не определяет постоянную PI, вы должны были бы определить его самостоятельно. Итак, ответ на ваш вопрос "Как я могу получить pi, не определяя его вручную?" Является ли «Вы не - или вы полагаетесь на некоторые расширения, специфичные компиляторы». Если вы не обеспокоены переносимостью, вы можете проверить руководство вашего компилятора для этого.

C ++ позволяет писать

 <код> #include <numbers> // std::numbers #include <iomanip> #include <iostream>  int main() {     std::cout << std::fixed << std::setprecision(20);     std::cout << "float       " << std::numbers::pi_v<float> << std::endl;     std::cout << "double      " << std::numbers::pi << std::endl;     std::cout << "long double " << std::numbers::pi_v<long double> << std::endl;     std::cout << "exact       " << "3.1415926535897932384626433" << std::endl; } 2  

Но инициализация этой константы не гарантируется статическими. Компилятор G ++, однако, обрабатывает эти математические функции как внутрисины и способны вычислить это постоянное выражение при компиляции времени.

 

Since the official standard library doesn't define a constant PI you would have to define it yourself. So the answer to your question "How can I get PI without defining it manually?" is "You don't -- or you rely on some compiler-specific extensions.". If you're not concerned about portability you could check your compiler's manual for this.

C++ allows you to write

const double PI = std::atan(1.0)*4; 

but the initialization of this constant is not guaranteed to be static. The G++ compiler however handles those math functions as intrinsics and is able to compute this constant expression at compile-time.

</div
 
 
     
     
32
 
vote

из Ta href="http://linux.die.net/include/math.h"> POSIX MAN PAGE of Math.h :

 <код> #include <numbers> // std::numbers #include <iomanip> #include <iostream>  int main() {     std::cout << std::fixed << std::setprecision(20);     std::cout << "float       " << std::numbers::pi_v<float> << std::endl;     std::cout << "double      " << std::numbers::pi << std::endl;     std::cout << "long double " << std::numbers::pi_v<long double> << std::endl;     std::cout << "exact       " << "3.1415926535897932384626433" << std::endl; } 3  
 

From the Posix man page of math.h:

   The  <math.h>  header  shall  provide for the following constants.  The    values are of type double and are accurate within the precision of  the    double type.     M_PI   Value of pi     M_PI_2 Value of pi/2     M_PI_4 Value of pi/4     M_1_PI Value of 1/pi     M_2_PI Value of 2/pi     M_2_SQRTPI           Value of 2/ sqrt pi 
</div
 
 
 
 
27
 
vote

Стандартный C ++ не имеет постоянной для PI.

Многие компиляторы C ++ определяют <код> #include <numbers> // std::numbers #include <iomanip> #include <iostream> int main() { std::cout << std::fixed << std::setprecision(20); std::cout << "float " << std::numbers::pi_v<float> << std::endl; std::cout << "double " << std::numbers::pi << std::endl; std::cout << "long double " << std::numbers::pi_v<long double> << std::endl; std::cout << "exact " << "3.1415926535897932384626433" << std::endl; } 4 в <код> #include <numbers> // std::numbers #include <iomanip> #include <iostream> int main() { std::cout << std::fixed << std::setprecision(20); std::cout << "float " << std::numbers::pi_v<float> << std::endl; std::cout << "double " << std::numbers::pi << std::endl; std::cout << "long double " << std::numbers::pi_v<long double> << std::endl; std::cout << "exact " << "3.1415926535897932384626433" << std::endl; } 5 (или в <код> #include <numbers> // std::numbers #include <iomanip> #include <iostream> int main() { std::cout << std::fixed << std::setprecision(20); std::cout << "float " << std::numbers::pi_v<float> << std::endl; std::cout << "double " << std::numbers::pi << std::endl; std::cout << "long double " << std::numbers::pi_v<long double> << std::endl; std::cout << "exact " << "3.1415926535897932384626433" << std::endl; } 6 для c) как нестандартное расширение. Возможно, вам придется <код> #include <numbers> // std::numbers #include <iomanip> #include <iostream> int main() { std::cout << std::fixed << std::setprecision(20); std::cout << "float " << std::numbers::pi_v<float> << std::endl; std::cout << "double " << std::numbers::pi << std::endl; std::cout << "long double " << std::numbers::pi_v<long double> << std::endl; std::cout << "exact " << "3.1415926535897932384626433" << std::endl; } 7 , прежде чем увидеть его.

 

Standard C++ doesn't have a constant for PI.

Many C++ compilers define M_PI in cmath (or in math.h for C) as a non-standard extension. You may have to #define _USE_MATH_DEFINES before you can see it.

</div
 
 
18
 
vote

Я бы сделал

 <код> template<typename T> T const pi = std::acos(-T(1));   

или

 <код> template<typename T> T const pi = std::arg(-std::log(T(2)));   

Я бы не набрав в π до точности, который вам нужен . Что это даже должно означать? Точность , вам нужна точность T , но мы ничего не знаем о T .

Вы можете сказать: о чем ты говоришь? <Код> T будет <код> float , <код> double или <код> long double . Итак, просто введите точность <код> long double , то есть.

 <код> template<typename T> T const pi = static_cast<T>(/* long double precision π */);   

Но вы действительно знаете, что в будущем не будет нового типа плавающей точки в будущем с еще более высокой точностью, чем <Код> template<typename T> T const pi = std::arg(-std::log(T(2))); 0 ? Вы не.

И вот почему первое решение красивое. Вы можете быть уверены, что стандарт перегружает тригонометрические функции для нового типа.

И, пожалуйста, не говорите, что оценка тригонометрической функции при инициализации представляет собой штраф производительности.

 

I would do

template<typename T> T const pi = std::acos(-T(1)); 

or

template<typename T> T const pi = std::arg(-std::log(T(2))); 

I would not typing in π to the precision you need. What is that even supposed to mean? The precision you need is the precision of T, but we know nothing about T.

You might say: What are you talking about? T will be float, double or long double. So, just type in the precision of long double, i.e.

template<typename T> T const pi = static_cast<T>(/* long double precision π */); 

But do you really know that there won't be a new floating point type in the standard in the future with an even higher precision than long double? You don't.

And that's why the first solution is beautiful. You can be quite sure that the standard would overload the trigonometric functions for a new type.

And please, don't say that the evaluation of a trigonometric function at initialization is a performance penalty.

</div
 
 
   
   
12
 
vote

Я использую следующие в одном из моего общего заголовка в проекте, который охватывает все основания:

 <код> template<typename T> T const pi = std::arg(-std::log(T(2))); 1  

На боковой записке все ниже компиляторы определяют константы m_pi и m_pil, если вы включите <код> template<typename T> T const pi = std::arg(-std::log(T(2))); 2 . Нет необходимости добавлять `#define _use_math_defines, который требуется только для VC ++.

 <код> template<typename T> T const pi = std::arg(-std::log(T(2))); 3  
 

I use following in one of my common header in the project that covers all bases:

#define _USE_MATH_DEFINES #include <cmath>  #ifndef M_PI #define M_PI (3.14159265358979323846) #endif  #ifndef M_PIl #define M_PIl (3.14159265358979323846264338327950288) #endif 

On a side note, all of below compilers define M_PI and M_PIl constants if you include <cmath>. There is no need to add `#define _USE_MATH_DEFINES which is only required for VC++.

x86 GCC 4.4+ ARM GCC 4.5+ x86 Clang 3.0+ 
</div
 
 
   
   
8
 
vote

Я вообще предпочитаю определить свой собственный: <код> template<typename T> T const pi = std::arg(-std::log(T(2))); 4 потому что не все реализации предоставляют это для вас.

Вопрос о том, вызывается ли эта функция при выполнении времени или статически выходит при компиляционном времени, обычно не проблема, потому что он только один раз происходит.

 

I generally prefer defining my own: const double PI = 2*acos(0.0); because not all implementations provide it for you.

The question of whether this function gets called at runtime or is static'ed out at compile time is usually not an issue, because it only happens once anyway.

</div
 
 
 
 
8
 
vote

Я только что столкнулся с Эта статья от Дэнни Калев , который имеет отличный совет для C ++ 14 и выше. < / P >.

 <код> template<typename T> T const pi = std::arg(-std::log(T(2))); 5  

Я думал, что это довольно круто (хотя я бы использовал самую высокую точность Pi там, возможно, я могу), особенно потому, что шаблоны могут использовать его на основе типа.

 <код> template<typename T> T const pi = std::arg(-std::log(T(2))); 6  

 

I just came across this article by Danny Kalev which has a great tip for C++14 and up.

template<typename T> constexpr T pi = T(3.1415926535897932385); 

I thought this was pretty cool (though I would use the highest precision PI in there I could), especially because templates can use it based on type.

template<typename T> T circular_area(T r) {   return pi<T> * r * r; } double darea= circular_area(5.5);//uses pi<double> float farea= circular_area(5.5f);//uses pi<float> 
</div
 
 
4
 
vote

Значения, такие как M_PI, M_PI_2, M_PI_4 и т. Д. Не являются стандартными C ++, поэтому ConstexPr кажется лучшим решением. Различные выражения Const могут быть сформулированы, что рассчитать тот же PI, и оно касается меня, оказывают ли они (все), дают мне полную точность. Стандарт C ++ явно не упоминается, как рассчитать Pi. Поэтому я склонен вернуться к определению PI вручную. Я хотел бы поделиться решением ниже, которое поддерживает все виды фракций PI в полной точности.

 <код> template<typename T> T const pi = std::arg(-std::log(T(2))); 7  
 

Values like M_PI, M_PI_2, M_PI_4, etc are not standard C++ so a constexpr seems a better solution. Different const expressions can be formulated that calculate the same pi and it concerns me whether they (all) provide me the full accuracy. The C++ standard does not explicitly mention how to calculate pi. Therefore, I tend to fall back to defining pi manually. I would like to share the solution below which supports all kind of fractions of pi in full accuracy.

#include <ratio> #include <iostream>  template<typename RATIO> constexpr double dpipart() {     long double const pi = 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899863;     return static_cast<double>(pi * RATIO::num / RATIO::den); }  int main() {     std::cout << dpipart<std::ratio<-1, 6>>() << std::endl; } 
</div
 
 
 
 
4
 
vote

Некоторые элегантные решения. Я сомнительно, что точность тригонометрических функций равна точке типов, хотя. Для тех, которые предпочитают писать постоянное значение, это работает для G ++: -

 <код> template<typename T> T const pi = std::arg(-std::log(T(2))); 8  

256 Точность десятичной цифры должна быть достаточно для любого будущего длинного длительного двойного типа. Если требуются больше посетителей https://www.piday.org/million/ .

 

Some elegant solutions. I am doubtful that the precision of the trigonometric functions is equal to the precision of the types though. For those that prefer to write a constant value, this works for g++ :-

template<class T> class X { public:             static constexpr T PI = (T) 3.14159265358979323846264338327950288419 71693993751058209749445923078164062862089986280348253421170679821480865132823066 47093844609550582231725359408128481117450284102701938521105559644622948954930381 964428810975665933446128475648233786783165271201909145648566923460; ... } 

256 decimal digit accuracy should be enough for any future long long long double type. If more are required visit https://www.piday.org/million/.

</div
 
 
2
 
vote

на Windows (Cygwin + G ++), я обнаружил, что необходимо добавить флаг <код> -D_XOPEN_SOURCE=500 для препроцессора для обработки определения <код> M_PI в <код> math.h .

 

On windows (cygwin + g++), I've found it necessary to add the flag -D_XOPEN_SOURCE=500 for the preprocessor to process the definition of M_PI in math.h.

</div
 
 
   
   
2
 
vote
 <код> #include <cmath> const long double pi = acos(-1.L);   
 
#include <cmath> const long double pi = acos(-1.L); 
</div
 
 
 
 
1
 
vote

C ++ 14 позволяет вам делать <код> static constexpr auto pi = acos(-1);

 

C++14 lets you do static constexpr auto pi = acos(-1);

</div
 
 
       
       
1
 
vote

Вы можете сделать это:

 <код> #include <cmath> #ifndef M_PI #define M_PI (3.14159265358979323846) #endif   

Если <код> M_PI уже определено в <код> cmath , это не сделает ничего другого, чем включают <код> cmath . Если M_PI не определен (который имеет значение, например, в Visual Studio), он определит его. В обоих случаях вы можете использовать <код> M_PI0 , чтобы получить значение pi.

Это значение pi поставляется от Qt Creator's QMath.h.

 

You can do this:

#include <cmath> #ifndef M_PI #define M_PI (3.14159265358979323846) #endif 

If M_PI is already defined in cmath, this won't do anything else than include cmath. If M_PI isn't defined (which is the case for example in Visual Studio), it will define it. In both cases, you can use M_PI to get the value of pi.

This value of pi comes from Qt Creator's qmath.h.

</div
 
 
0
 
vote

Вы можете использовать это:

 <код> M_PI1  

Математические константы не определены в стандарте C / C ++. Чтобы использовать их, вы должны сначала определить <код> M_PI2 , а затем включить <код> M_PI3 или <код> M_PI4 .

 

You can use that:

#define _USE_MATH_DEFINES // for C++ #include <cmath>  #define _USE_MATH_DEFINES // for C #include <math.h> 

Math Constants are not defined in Standard C/C++. To use them, you must first define _USE_MATH_DEFINES and then include cmath or math.h.

</div
 
 

Связанный проблема

0  Использование аргументов Makefile без Foo =  ( Using makefile arguments without foo ) 
У меня есть makefile, который я использую для компиляции одного файла. Когда мне нужно пройти аргумент, я использую цель = TargetFile. Сценарий принимает ар...

4  Преобразовать фильм в Openni * .oni видео  ( Convert movie to openni oni video ) 
the библиотека Kinect Openni использует пользовательский формат видеофайла для хранения видеороликов, которые содержат информацию RGB + D. Эти видео имеют р...

0  Ошибка: аргумент типа "void (opca_hello ::) ()" не соответствует "void * (*) (void *)"  ( Error argument of type void opca hello does not match void void ) 
Я написал очень простой код для резьбы. Поскольку я очень новый для этого, я понятия не имею об ошибке. <код> class opca_hello { public: void hello(); } v...

0  Как получить несколько наборов результатов с Poco :: Data?  ( How to fetch multiple result sets with pocodata ) 
Я прочитал Poco :: Руководство пользователя данных и упоминается, что Библиотека имеет поддержку нескольких наборов результатов. Существует пример для этой ...

2  ODBC и NLS_LANG  ( Odbc and nls lang ) 
Допустим, я создал две разные исполняемые файлы программы, например, в C ++. По какой-то причине две программы внутреннее представление текста отличаются др...

1  STD :: CIN непосредственно к функции  ( Stdcin directly to a function ) 
Недавно я наткнулся на следующую часть кода. Я не знаю, имеет ли это какой-либо смысл, я просто пытаюсь его понять: <код> object Gender extends Enumeration ...

1  Почему 64-битное целое расширение C ++ называется «долгим долгом»?  ( Why is the 64bit integer extension of c called long long ) 
В отличие от других типов: «int», "логический", "двойной" и т. Д. И даже таможенные классы, есть только одно слово. Однако только одно слово для их типа тольк...

1  Не можете получить программу Math C ++ для работы [дубликата]  ( Cant get math c program to work ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

1  C ++ - утечка памяти, вызванная использованием размещения New Over * этот указатель?  ( C memory leak caused by using placement new over this pointer ) 
Как известно, размещение New просто строит объект без выделения любой памяти. Также все члены в классе <Код> 5.5.10 являются объектами вместо указателей, хот...

2  Новый DataType, который может иметь количество до 100 цифр  ( New datatype which can have numbers upto 100 digits ) 
Примечание. Это был вопрос интервью и может не иметь фактического случая использования в настоящее время Вопрос должен был разработать класс, который может ...

5  Что такое "для (x: y)"?  ( What is for x y ) 
Итак, я оглянулся на межпубки о нитках, и я пришел в блог / учебную вещь о нитках, но то, что меня смущено, была эта линия, которую он использовал <код> for...

0  Проблема дизайна - создание шрифта Global (C ++, Marmalade)  ( Design issue making a font global c marmalade ) 
У меня есть проект Marmalade C ++, где встроенный в шрифте не масштабируется на экран. Чтобы справиться с этим вопросом, я делаю пользовательский шрифт, котор...

0  Libusb_Bulk_Transfer добавляет CRC?  ( Does libusb bulk transfer add crc ) 
Я пишу программу пользовательского интерфейса для устройства USB в C ++, используя Visual Studio 2019. Я использую библиотеку Libusb. Я хочу сделать объемную ...

-1  Неожиданный идентификатор ошибки - не уверен, почему (C ++)  ( Unexpected error id not sure why c ) 
IM Реализация программы C ++, по соображениям проекта оно должно быть включено в один файл, поэтому я не могу поставить то, что вы обычно в отдельном файле за...

-1  Мусор с указателями в классе, C ++  ( Garbage with pointers in a class c ) 
Я использую Borland Builder C ++. У меня есть утечка памяти, и я знаю, что это должно быть из-за этого класса, который я создал, но я не уверен, как это испра...