You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -17,6 +17,7 @@ These macros control specific compiler features.
17
17
|[_ATL_CSTRING_EXPLICIT_CONSTRUCTORS](#_atl_cstring_explicit_constructors)|Makes certain `CString` constructors explicit, preventing any unintentional conversions.|
18
18
|[_ATL_ENABLE_PTM_WARNING](#_atl_enable_ptm_warning)|Define this macro to require C++ standard syntax. It generates the C4867 compiler error when non-standard syntax is used to initialize a pointer to a member function.|
19
19
|[_ATL_FREE_THREADED](#_atl_free_threaded)|Define if one or more of your objects use free or neutral threading.|
20
+
|[_ATL_MODULES](#_ATL_MODULES)|Allows you to compile ATL projects with [permissive-](../../build/reference/permissive-standards-conformance.md) and use ATL with [C++ modules](../../cpp/modules-cpp.md).|
20
21
|[_ATL_MULTI_THREADED](#_atl_multi_threaded)|A symbol that indicates the project will have objects that are marked as Both, Free or Neutral. The macro [_ATL_FREE_THREADED](#_atl_free_threaded) should be used instead.|
21
22
|[_ATL_NO_AUTOMATIC_NAMESPACE](#_atl_no_automatic_namespace)|A symbol that prevents the default use of namespace as ATL.|
22
23
|[_ATL_NO_COM_SUPPORT](#_atl_no_com_support)|A symbol that prevents COM-related code from being compiled with your project.|
@@ -122,6 +123,14 @@ _ATL_FREE_THREADED
122
123
123
124
Specifies free threading. Free threading is equivalent to a multithread apartment model. See [Specifying the Project's Threading Model](../../atl/specifying-the-threading-model-for-a-project-atl.md) for other threading options, and [Options, ATL Simple Object Wizard](../../atl/reference/options-atl-simple-object-wizard.md) for a description of the threading models available for an ATL object.
124
125
126
+
## <aname="_ATL_MODULES"></a> `_ATLMODULES`
127
+
128
+
Allows you to compile ATL projects with [permissive-](../../build/reference/permissive-standards-conformance.md) and use ATL with [C++ modules](../../cpp/modules-cpp.md).
@@ -17,25 +16,14 @@ Computes the natural logarithm of 1 plus the specified value.
17
16
## Syntax
18
17
19
18
```C
20
-
doublelog1p(
21
-
double x
22
-
);
23
-
floatlog1pf(
24
-
float x
25
-
);
26
-
longdoublelog1pl(
27
-
long double x
28
-
);
19
+
doublelog1p(double x);
20
+
float log1pf(float x);
21
+
long double log1pl(long double x);
29
22
30
23
#define log1p(X) // Requires C11 or higher
31
24
32
-
floatlog1p(
33
-
float x
34
-
); //C++ only
35
-
36
-
longdoublelog1p(
37
-
long double x
38
-
); //C++ only
25
+
float log1p(float x); //C++ only
26
+
long double log1p(long double x); //C++ only
39
27
```
40
28
41
29
### Parameters
@@ -68,18 +56,18 @@ The **`log1p`** functions may be more accurate than using `log(x + 1)` when *`x`
68
56
69
57
Because C++ allows overloading, you can call overloads of **`log1p`** that take and return **`float`** and **`long double`** types. In a C program, unless you're using the \<tgmath.h> macro to call this function, **`log1p`** always takes and returns a **`double`**.
70
58
71
-
If you use the \<tgmath.h> `log1p()` macro, the type of the argument determines which version of the function is selected. See [Type-generic math](../tgmath.md) for details.
59
+
If you use the `<tgmath.h>` `log1p()` macro, the type of the argument determines which version of the function is selected. See [Type-generic math](../tgmath.md) for details.
72
60
73
-
If*`x`* is a natural number, this function returns the logarithm of the factorial of (*`x`*- 1).
61
+
Where *`x`* is a natural number, this function returns the base e logarithm of *`x`* + 1.
74
62
75
63
By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md).
0 commit comments