Skip to content

Commit 8adabe1

Browse files
authored
Merge pull request #2077 from MicrosoftDocs/master
6/10/2019 AM Publish
2 parents 65ed563 + ed19e2e commit 8adabe1

40 files changed

+672
-189
lines changed

docs/build/building-on-the-command-line.md

Lines changed: 125 additions & 35 deletions
Large diffs are not rendered by default.
Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,54 @@
11
---
2-
title: "CL Environment Variables"
3-
ms.date: "05/06/2019"
2+
title: "CL environment variables"
3+
ms.date: "06/06/2019"
44
f1_keywords: ["cl"]
55
helpviewer_keywords: ["INCLUDE environment variable", "cl.exe compiler, environment variables", "LIBPATH environment variable", "environment variables, CL compiler"]
66
ms.assetid: 2606585b-a681-42ee-986e-1c9a2da32108
77
---
8-
# CL Environment Variables
8+
# CL environment variables
99

1010
The CL tool uses the following environment variables:
1111

12-
- CL and \_CL\_, if defined. The CL tool prepends the options and arguments defined in the CL environment variable to the command line arguments, and appends the options and arguments defined in \_CL\_, before processing.
12+
- CL and \_CL_, if defined. The CL tool prepends the options and arguments defined in the CL environment variable to the command-line arguments, and appends the options and arguments defined in \_CL_, before processing.
1313

1414
- INCLUDE, which must point to the \include subdirectory of your Visual Studio installation.
1515

16-
- LIBPATH, which specifies directories to search for metadata files referenced with [#using](../../preprocessor/hash-using-directive-cpp.md). See `#using` for more information on LIBPATH.
16+
- LIBPATH, which specifies directories to search for metadata files referenced with [#using](../../preprocessor/hash-using-directive-cpp.md). For more information on LIBPATH, see [#using](../../preprocessor/hash-using-directive-cpp.md).
1717

18-
You can set the CL or \_CL\_ environment variable using the following syntax:
18+
You can set the CL or \_CL_ environment variable using the following syntax:
1919

20-
> SET CL=[ [*option*] ... [*file*] ...] [/link *link-opt* ...]
20+
> SET CL=[ [*option*] ... [*file*] ...] [/link *link-opt* ...] \
2121
> SET \_CL\_=[ [*option*] ... [*file*] ...] [/link *link-opt* ...]
2222
23-
For details on the arguments to the CL and \_CL\_ environment variables, see [MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md).
23+
For details on the arguments to the CL and \_CL_ environment variables, see [MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md).
2424

25-
You can use these environment variables to define the files and options you use most often and use the command line to define specific files and options for specific purposes. The CL and \_CL\_ environment variables are limited to 1024 characters (the command-line input limit).
25+
You can use these environment variables to define the files and options you use most often. Then use the command line to give more files and options to CL for specific purposes. The CL and \_CL_ environment variables are limited to 1024 characters (the command-line input limit).
2626

27-
You cannot use the /D option to define a symbol that uses an equal sign (=). You can substitute the number sign (#) for an equal sign. In this way, you can use the CL or \_CL\_ environment variables to define preprocessor constants with explicit values—for example, `/DDEBUG#1` to define `DEBUG=1`.
27+
You can't use the [/D](d-preprocessor-definitions.md) option to define a symbol that uses an equal sign (**=**). Instead, you can use the number sign (**#**) for an equal sign. In this way, you can use the CL or \_CL_ environment variables to define preprocessor constants with explicit values—for example, `/DDEBUG#1` to define `DEBUG=1`.
2828

2929
For related information, see [Set Environment Variables](../setting-the-path-and-environment-variables-for-command-line-builds.md).
3030

3131
## Examples
3232

33-
The following is an example of setting the CL environment variable:
33+
The following command is an example of setting the CL environment variable:
3434

3535
> SET CL=/Zp2 /Ox /I\INCLUDE\MYINCLS \LIB\BINMODE.OBJ
3636
37-
When this environment variable is set, if you enter `CL INPUT.C` at the command line, this is the effective command:
37+
When the CL environment variable is set, if you enter `CL INPUT.C` at the command line, the effective command becomes:
3838

3939
> CL /Zp2 /Ox /I\INCLUDE\MYINCLS \LIB\BINMODE.OBJ INPUT.C
4040
4141
The following example causes a plain CL command to compile the source files FILE1.c and FILE2.c, and then link the object files FILE1.obj, FILE2.obj, and FILE3.obj:
4242

43-
> SET CL=FILE1.C FILE2.C
44-
> SET \_CL\_=FILE3.OBJ
43+
> SET CL=FILE1.C FILE2.C \
44+
> SET \_CL_=FILE3.OBJ \
4545
> CL
4646
47-
This has the same effect as the following command line:
47+
These environment variables make the call to CL have the same effect as the following command line:
4848

4949
> CL FILE1.C FILE2.C FILE3.OBJ
5050
5151
## See also
5252

53-
[Setting Compiler Options](compiler-command-line-syntax.md)<br/>
53+
[Setting Compiler Options](compiler-command-line-syntax.md) \
5454
[MSVC Compiler Options](compiler-options.md)

docs/c-runtime-library/reference/get-osfhandle.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,16 @@ An existing file descriptor.
2727

2828
## Return Value
2929

30-
Returns an operating-system file handle if *fd* is valid. Otherwise, the invalid parameter handler is invoked, as described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, this function returns **INVALID_HANDLE_VALUE** (-1) and sets **errno** to **EBADF**, indicating an invalid file handle. To avoid a compiler warning when the result is used in routines that expect a Win32 file handle, cast it to a **HANDLE** type.
30+
Returns an operating-system file handle if *fd* is valid. Otherwise, the invalid parameter handler is invoked, as described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, it returns **INVALID_HANDLE_VALUE** (-1). It also sets **errno** to **EBADF**, indicating an invalid file handle. To avoid a warning when the result is used as a Win32 file handle, cast it to a **HANDLE** type.
31+
32+
> [!NOTE]
33+
> When **stdin**, **stdout**, and **stderr** aren't associated with a stream (for example, in a Windows application without a console window), the file descriptor values for these streams are returned from [_fileno](fileno.md) as the special value -2. Similarly, if you use a 0, 1, or 2 as the file descriptor parameter instead of the result of a call to **_fileno**, **_get_osfhandle** also returns the special value -2 when the file descriptor is not associated with a stream, and does not set **errno**. However, this is not a valid file handle value, and subsequent calls that attempt to use it are likely to fail.
34+
35+
For more information about **EBADF** and other error codes, see [_doserrno, errno, _sys_errlist, and _sys_nerr](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md).
3136

3237
## Remarks
3338

34-
To close a file whose operating system (OS) file handle is obtained by **_get_osfhandle**, call [_close](close.md) on the file descriptor *fd*. Do not call **CloseHandle** on the return value of this function. The underlying OS file handle is owned by the *fd* file descriptor, and is closed when [_close](close.md) is called on *fd*. If the file descriptor is owned by a `FILE *` stream, then calling [fclose](fclose-fcloseall.md) on that `FILE *` stream closes both the file descriptor and the underlying OS file handle. In this case, do not call [_close](close.md) on the file descriptor.
39+
To close a file whose operating system (OS) file handle is obtained by **_get_osfhandle**, call [_close](close.md) on the file descriptor *fd*. Never call **CloseHandle** on the return value of this function. The underlying OS file handle is owned by the *fd* file descriptor, and is closed when [_close](close.md) is called on *fd*. If the file descriptor is owned by a `FILE *` stream, then calling [fclose](fclose-fcloseall.md) on that `FILE *` stream closes both the file descriptor and the underlying OS file handle. In this case, don't call [_close](close.md) on the file descriptor.
3540

3641
## Requirements
3742

@@ -48,3 +53,4 @@ For more compatibility information, see [Compatibility](../../c-runtime-library/
4853
[_creat, _wcreat](creat-wcreat.md)<br/>
4954
[_dup, _dup2](dup-dup2.md)<br/>
5055
[_open, _wopen](open-wopen.md)<br/>
56+
[\_open_osfhandle](open-osfhandle.md)

docs/c-runtime-library/reference/open-osfhandle.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ ms.assetid: 30d94df4-7868-4667-a401-9eb67ecb7855
1010
---
1111
# _open_osfhandle
1212

13-
Associates a C run-time file descriptor with an existing operating-system file handle.
13+
Associates a C run-time file descriptor with an existing operating system file handle.
1414

1515
## Syntax
1616

@@ -24,7 +24,7 @@ int _open_osfhandle (
2424
### Parameters
2525

2626
*osfhandle*<br/>
27-
Operating-system file handle.
27+
Operating system file handle.
2828

2929
*flags*<br/>
3030
Types of operations allowed.
@@ -35,7 +35,7 @@ If successful, **_open_osfhandle** returns a C run-time file descriptor. Otherwi
3535

3636
## Remarks
3737

38-
The **_open_osfhandle** function allocates a C run-time file descriptor and associates it with the operating-system file handle specified by *osfhandle*. To avoid a compiler warning, cast the *osfhandle* argument from **HANDLE** to **intptr_t**. The *flags* argument is an integer expression formed from one or more of the manifest constants defined in \<fcntl.h>. When two or more manifest constants are used to form the *flags* argument, the constants are combined with the bitwise-OR operator ( **&#124;** ).
38+
The **_open_osfhandle** function allocates a C run-time file descriptor. It associates this file descriptor with the operating system file handle specified by *osfhandle*. To avoid a compiler warning, cast the *osfhandle* argument from **HANDLE** to **intptr_t**. The *flags* argument is an integer expression formed from one or more of the manifest constants defined in \<fcntl.h>. You can use the bitwise-OR operator ( **&#124;** ) to combine two or more manifest constants to form the *flags* argument.
3939

4040
These manifest constants are defined in \<fcntl.h>:
4141

@@ -46,7 +46,7 @@ These manifest constants are defined in \<fcntl.h>:
4646
| **\_O\_TEXT** | Opens the file in text (translated) mode. |
4747
| **\_O\_WTEXT** | Opens the file in Unicode (translated UTF-16) mode. |
4848

49-
The **_open_osfhandle** call transfers ownership of the Win32 file handle to the file descriptor. To close a file opened by using **_open_osfhandle**, call [\_close](close.md). The underlying OS file handle is also closed by a call to **_close**. Don't call the Win32 function **CloseHandle** on the original handle. If the file descriptor is owned by a **FILE &#42;** stream, then a call to [fclose](fclose-fcloseall.md) on that **FILE &#42;** stream closes both the file descriptor and the underlying handle. In this case, don't call **_close** on the file descriptor or **CloseHandle** on the original handle.
49+
The **_open_osfhandle** call transfers ownership of the Win32 file handle to the file descriptor. To close a file opened by using **_open_osfhandle**, call [\_close](close.md). The underlying OS file handle is also closed by a call to **_close**. Don't call the Win32 function **CloseHandle** on the original handle. If the file descriptor is owned by a **FILE &#42;** stream, then a call to [fclose](fclose-fcloseall.md) closes both the file descriptor and the underlying handle. In this case, don't call **_close** on the file descriptor or **CloseHandle** on the original handle.
5050

5151
## Requirements
5252

@@ -59,3 +59,4 @@ For more compatibility information, see [Compatibility](../../c-runtime-library/
5959
## See also
6060

6161
[File Handling](../../c-runtime-library/file-handling.md)<br/>
62+
[\_get_osfhandle](get-osfhandle.md)

docs/cpp/how-to-create-and-use-shared-ptr-instances.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ You can pass a `shared_ptr` to another function in the following ways:
102102
103103
- If you have to give a helper function access to the underlying pointer, and you know that the helper function will just use the pointer and return before the calling function returns, then that function doesn't have to share ownership of the underlying pointer. It just has to access the pointer within the lifetime of the caller's `shared_ptr`. In this case, it's safe to pass the `shared_ptr` by reference, or pass the raw pointer or a reference to the underlying object. Passing this way provides a small performance benefit, and may also help you express your programming intent.
104104
105-
- Sometimes, for example in a `std:vector<shared_ptr<T>>`, you may have to pass each `shared_ptr` to a lambda expression body or named function object. If the lambda or function doesn't store the pointer, then pass the `shared_ptr` by reference to avoid invoking the copy constructor for each element.
105+
- Sometimes, for example in a `std::vector<shared_ptr<T>>`, you may have to pass each `shared_ptr` to a lambda expression body or named function object. If the lambda or function doesn't store the pointer, then pass the `shared_ptr` by reference to avoid invoking the copy constructor for each element.
106106
107107
## Example 6
108108

0 commit comments

Comments
 (0)