Skip to content

Commit 7d083ec

Browse files
Tyler WhitneyTyler Whitney
authored andcommitted
tech review feedback
1 parent 0ef62ab commit 7d083ec

56 files changed

Lines changed: 148 additions & 187 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/c-runtime-library/crt-library-features.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
---
22
title: "CRT Library Features"
3+
description: "This various .lib files that comprise the Microsoft C run-time libraries as well as their associated compiler options and preprocessor directives."
34
ms.date: "08/20/2018"
45
helpviewer_keywords: ["MSVCR71.dll", "libraries [C++], multithreaded", "library files, run-time", "LIBCMT.lib", "LIBCP.lib", "LIBCPMT.lib", "run-time libraries, C", "CRT, release versions", "MSVCP71.dll", "LIBC.lib", "libraries [C++]", "libraries [C++], run-time", "linking [C++], libraries"]
56
ms.assetid: a889fd39-807d-48f2-807f-81492612463f
@@ -65,7 +66,7 @@ For more information on using the CRT with **/clr**, see [Mixed (Native and Mana
6566

6667
To build a debug version of your application, the [_DEBUG](../c-runtime-library/debug.md) flag must be defined and the application must be linked with a debug version of one of these libraries. For more information about using the debug versions of the library files, see [CRT Debugging Techniques](/visualstudio/debugger/crt-debugging-techniques).
6768

68-
This version of the CRT is not fully conformant with the C99 standard. In particular, the \<tgmath.h> header and the CX_LIMITED_RANGE/FP_CONTRACT pragma macros are not supported. Certain elements such as the meaning of parameter specifiers in standard IO functions use legacy interpretations by default. You can use /Zc compiler conformance options and specify linker options to control some aspects of library conformance,
69+
This version of the CRT is not fully conformant with the C99 standard. In particular, the \<tgmath.h> header and the CX_LIMITED_RANGE/FP_CONTRACT pragma macros are not supported. Certain elements such as the meaning of parameter specifiers in standard IO functions use legacy interpretations by default. You can use /Zc compiler conformance options and specify linker options to control some aspects of library conformance.
6970

7071
## C++ Standard Library
7172

docs/c-runtime-library/reference/abs-labs-llabs-abs64.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ The **abs**, **labs**, **llabs** and **_abs64** functions return the absolute va
4141

4242
## Remarks
4343

44-
Because C++ allows overloading, you can call overloads of **abs** that take and return **`long`**, **`long long`**, **`float`**, **`double`**, and **`long double`** values. These overloads are defined in the \<cmath> header. In a C program, **abs** always takes and returns an **`int`**.
44+
Because C++ allows overloading, you can call overloads of **abs** that take and return **`long`**, **`long long`**, **`float`**, **`double`**, and **`long double`** values. These overloads are defined in the \<cmath> header. In a C program, unless you are using the \<tgmath.h> macro to call this function, **abs** always takes and returns an **`int`**.
4545

4646
**Microsoft-specific**: Because the range of negative integers that can be represented by using any integral type is larger than the range of positive integers that can be represented by using that type, it's possible to supply an argument to these functions that can’t be converted. If the absolute value of the argument cannot be represented by the return type, the **abs** functions return the argument value unchanged. Specifically, `abs(INT_MIN)` returns `INT_MIN`, `labs(LONG_MIN)` returns `LONG_MIN`, `llabs(LLONG_MIN)` returns `LLONG_MIN`, and `_abs64(_I64_MIN)` returns `_I64_MIN`. This means that the **abs** functions cannot be used to guarantee a positive value.
4747

docs/c-runtime-library/reference/acos-acosf-acosl.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ double acos( double x );
2121
float acosf( float x );
2222
long double acosl( long double x );
2323
#define acos(X) // Requires C11 or higher
24-
```
2524

26-
```cpp
2725
float acos( float x ); // C++ only
2826
long double acos( long double x ); // C++ only
2927
```
@@ -47,9 +45,9 @@ By default, if *x* is less than -1 or greater than 1, **acos** returns an indefi
4745
4846
## Remarks
4947
50-
Because C++ allows overloading, you can call overloads of **acos** that take and return **`float`** and **`long double`** types. In a C program, **acos** always takes and returns a **`double`**.
48+
Because C++ allows overloading, you can call overloads of **acos** that take and return **`float`** and **`long double`** types. In a C program, unless you are using the \<tgmath.h> macro to call this function, **acos** always takes and returns a **`double`**.
5149
52-
If you use the \<tgmath.h> `acos()` macro, the type of the argument determines which version of the function is selected.See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
50+
If you use the \<tgmath.h> `acos()` macro, the type of the argument determines which version of the function is selected. See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
5351
5452
By default, this function's global state is scoped to the application. To change this, see [Global state in the CRT](../global-state.md).
5553

docs/c-runtime-library/reference/acosh-acoshf-acoshl.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,14 @@ double acosh( double x );
2121
float acoshf( float x );
2222
long double acoshl( long double x );
2323
#define acosh(X) // Requires C11 or higher
24-
```
2524

26-
```cpp
2725
float acosh( float x ); // C++ only
2826
long double acosh( long double x ); // C++ only
2927
```
3028
3129
### Parameters
3230
33-
*x*<br/>
31+
*x*\
3432
Floating-point value.
3533
3634
## Return Value
@@ -44,9 +42,9 @@ The **acosh** functions return the inverse hyberbolic cosine (arc hyperbolic cos
4442
4543
## Remarks
4644
47-
When you use C++, you can call overloads of **acosh** that take and return **`float`** or **`long double`** values. In a C program, **acosh** always takes and returns **`double`**.
45+
When you use C++, you can call overloads of **acosh** that take and return **`float`** or **`long double`** values. In a C program, unless you are using the \<tgmath.h> macro to call this function, **acosh** always takes and returns **`double`**.
4846
49-
If you use the \<tgmath.h> `acosh()` macro, the type of the argument determines which version of the function is selected.See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
47+
If you use the \<tgmath.h> `acosh()` macro, the type of the argument determines which version of the function is selected. See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
5048
5149
By default, this function's global state is scoped to the application. To change this, see [Global state in the CRT](../global-state.md).
5250

docs/c-runtime-library/reference/asin-asinf-asinl.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,14 @@ double asin( double x );
2121
float asinf ( float x );
2222
long double asinl( long double x );
2323
#define asin(X) // Requires C11 or higher
24-
```
2524

26-
```cpp
2725
float asin( float x ); // C++ only
2826
long double asin( long double x ); // C++ only
2927
```
3028
3129
### Parameters
3230
33-
*x*<br/>
31+
*x*\
3432
Value whose arcsine is to be calculated.
3533
3634
## Return Value
@@ -47,9 +45,9 @@ By default, if *x* is less than -1 or greater than 1, **asin** returns an indefi
4745
4846
## Remarks
4947
50-
Because C++ allows overloading, you can call overloads of **asin** with **`float`** and **`long double`** values. In a C program, **asin** always takes and returns a **`double`**.
48+
Because C++ allows overloading, you can call overloads of **asin** with **`float`** and **`long double`** values. In a C program, unless you are using the \<tgmath.h> macro to call this function, **asin** always takes and returns a **`double`**.
5149
52-
If you use the \<tgmath.h> `asin()` macro, the type of the argument determines which version of the function is selected.See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
50+
If you use the \<tgmath.h> `asin()` macro, the type of the argument determines which version of the function is selected. See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
5351
5452
By default, this function's global state is scoped to the application. To change this, see [Global state in the CRT](../global-state.md).
5553

docs/c-runtime-library/reference/asinh-asinhf-asinhl.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ double asinh( double x );
2121
float asinhf( float x );
2222
long double asinhl( long double x );
2323
#define asinh(X) // Requires C11 or higher
24-
```
2524

26-
```cpp
2725
float asinh( float x ); // C++ only
2826
long double asinh( long double x ); // C++ only
2927
```
@@ -43,9 +41,9 @@ The **asinh** functions return the inverse hyberbolic sine (arc hyperbolic sine)
4341
4442
## Remarks
4543
46-
When you use C++, you can call overloads of **asinh** that take and return **`float`** or **`long double`** values. In a C program, **asinh** always takes and returns **`double`**.
44+
When you use C++, you can call overloads of **asinh** that take and return **`float`** or **`long double`** values. In a C program, unless you are using the \<tgmath.h> macro to call this function, **asinh** always takes and returns **`double`**.
4745
48-
If you use the \<tgmath.h> `asinh()` macro, the type of the argument determines which version of the function is selected.See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
46+
If you use the \<tgmath.h> `asinh()` macro, the type of the argument determines which version of the function is selected. See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
4947
5048
5149
By default, this function's global state is scoped to the application. To change this, see [Global state in the CRT](../global-state.md).

docs/c-runtime-library/reference/atan-atanf-atanl-atan2-atan2f-atan2l.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,13 @@ float atanf( float x );
2222
long double atanl( long double x );
2323
#define atan(X) // Requires C11 or higher
2424

25+
float atan( float x ); // C++ only
26+
long double atan( long double x ); // C++ only
27+
2528
double atan2( double y, double x );
2629
float atan2f( float y, float x );
2730
long double atan2l( long double y, long double x );
28-
#define atan2( Y, X ) // Requires C11 or higher
29-
```
30-
31-
```cpp
32-
float atan( float x ); // C++ only
33-
long double atan( long double x ); // C++ only
31+
#define atan2(Y, X) // Requires C11 or higher
3432

3533
float atan2( float y, float x ); // C++ only
3634
long double atan2( long double y, long double x ); // C++ only
@@ -55,11 +53,11 @@ Any numbers.
5553
5654
The **atan** function calculates the arctangent (the inverse tangent function) of *x*. **atan2** calculates the arctangent of *y*/*x* (if *x* equals 0, **atan2** returns π/2 if *y* is positive, -π/2 if *y* is negative, or 0 if *y* is 0.)
5755
58-
If you use the \<tgmath.h> `atan()` or `atan2()` macro, the type of the argument determines which version of the function is selected.See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
56+
If you use the \<tgmath.h> `atan()` or `atan2()` macro, the type of the argument determines which version of the function is selected. See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
5957
6058
**atan** has an implementation that uses Streaming SIMD Extensions 2 (SSE2). For information and restrictions about using the SSE2 implementation, see [_set_SSE2_enable](set-sse2-enable.md).
6159
62-
Because C++ allows overloading, you can call overloads of **atan** and **atan2** that take **`float`** or **`long double`** arguments. In a C program, **atan** and **atan2** always take **`double`** arguments and return a **`double`**.
60+
Because C++ allows overloading, you can call overloads of **atan** and **atan2** that take **`float`** or **`long double`** arguments. In a C program, unless you are using the \<tgmath.h> macro to call this function, **atan** and **atan2** always take **`double`** arguments and return a **`double`**.
6361
6462
By default, this function's global state is scoped to the application. To change this, see [Global state in the CRT](../global-state.md).
6563

docs/c-runtime-library/reference/atanh-atanhf-atanhl.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,14 @@ double atanh( double x );
2121
float atanhf( float x );
2222
long double atanhl( long double x );
2323
#define atanh(X) // Requires C11 or higher
24-
```
2524

26-
```cpp
2725
float atanh( float x ); // C++ only
2826
long double atanh( long double x ); // C++ only
2927
```
3028
3129
### Parameters
3230
33-
*x*<br/>
31+
*x*\
3432
Floating-point value.
3533
3634
## Return Value
@@ -44,9 +42,9 @@ The **atanh** functions return the inverse hyberbolic tangent (arc hyperbolic ta
4442
4543
## Remarks
4644
47-
Because C++ allows overloading, you can call overloads of **atanh** that take and return **`float`** or **`long double`** values. In a C program, **atanh** always takes and returns **`double`**.
45+
Because C++ allows overloading, you can call overloads of **atanh** that take and return **`float`** or **`long double`** values. In a C program, unless you are using the \<tgmath.h> macro to call this function, **atanh** always takes and returns **`double`**.
4846
49-
If you use the \<tgmath.h> `atanh()` macro, the type of the argument determines which version of the function is selected.See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
47+
If you use the \<tgmath.h> `atanh()` macro, the type of the argument determines which version of the function is selected. See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
5048
5149
By default, this function's global state is scoped to the application. To change this, see [Global state in the CRT](../global-state.md).
5250

docs/c-runtime-library/reference/carg-cargf-cargl.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ The argument (also known as the phase) of *z*. The result is in the interval [-
4646
4747
## Remarks
4848
49-
Because C++ allows overloading, you can call overloads of **carg** that take **_Fcomplex** or **_Lcomplex** values, and return **`float`** or **`long double`** values. In a C program, **carg** always takes a **_Dcomplex** value and returns a **`double`** value.
49+
Because C++ allows overloading, you can call overloads of **carg** that take **_Fcomplex** or **_Lcomplex** values, and return **`float`** or **`long double`** values. In a C program, unless you are using the \<tgmath.h> macro to call this function, **carg** always takes a **_Dcomplex** value and returns a **`double`** value.
5050
51-
If you use the \<tgmath.h> `carg()` macro, the type of the argument determines which version of the function is selected.See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
51+
If you use the \<tgmath.h> `carg()` macro, the type of the argument determines which version of the function is selected. See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
5252
5353
## Requirements
5454

docs/c-runtime-library/reference/cbrt-cbrtf-cbrtl.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ The **cbrt** functions return the cube-root of *x*.
5050
5151
## Remarks
5252
53-
Because C++ allows overloading, you can call overloads of **cbrt** that take **`float`** or **`long double`** types. In a C program, **cbrt** always takes and returns **`double`**.
53+
Because C++ allows overloading, you can call overloads of **cbrt** that take **`float`** or **`long double`** types. In a C program, unless you are using the \<tgmath.h> macro to call this function, **cbrt** always takes and returns **`double`**.
5454
55-
If you use the \<tgmath.h> `cbrt()` macro, the type of the argument determines which version of the function is selected.See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
55+
If you use the \<tgmath.h> `cbrt()` macro, the type of the argument determines which version of the function is selected. See [Type-generic math](../../c-runtime-library/tgmath.md) for details.
5656
5757
By default, this function's global state is scoped to the application. To change this, see [Global state in the CRT](../global-state.md).
5858

0 commit comments

Comments
 (0)