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
Copy file name to clipboardExpand all lines: docs/c-language/c-comments.md
+3-4Lines changed: 3 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,8 @@
1
1
---
2
-
description: "Learn more about: C Comments"
3
2
title: "C Comments"
4
-
ms.date: "06/25/2018"
3
+
description: "Learn more about: C Comments"
4
+
ms.date: 06/25/2018
5
5
helpviewer_keywords: ["code comments, C code", "comments, documenting code", "comments, C code", "/* */ comment delimiters", "comments"]
6
-
ms.assetid: 0f5f2825-e673-49e7-8669-94e2f5294989
7
6
---
8
7
# C Comments
9
8
@@ -57,7 +56,7 @@ The Microsoft compiler also supports single-line comments preceded by two forwar
57
56
// This is a valid comment
58
57
```
59
58
60
-
Comments beginning with two forward slashes (**`//`**) are terminated by the next newline character that isn't preceded by an escape character. In the next example, the newline character is preceded by a backslash (**`\`**), creating an "escape sequence." This escape sequence causes the compiler to treat the next line as part of the previous line. (For more information, see [Escape Sequences](../c-language/escape-sequences.md).)
59
+
Comments beginning with two forward slashes (**`//`**) are terminated by the next newline character that isn't preceded by an escape character. In the next example, the newline character is preceded by a backslash (**`\`**), creating an "escape sequence." This escape sequence causes the compiler to treat the next line as part of the previous line. For more information, see [Escape Sequences](../c-language/escape-sequences.md).
@@ -38,7 +37,7 @@ You can initialize variables of any type, as long as you obey the following rule
38
37
39
38
- Variables declared with the **`auto`** or **`register`** storage-class specifier are initialized each time execution control passes to the block in which they're declared. If you omit an initializer from the declaration of an **`auto`** or **`register`** variable, the initial value of the variable is undefined. For automatic and register values, the initializer isn't restricted to being a constant; it can be any expression involving previously defined values, even function calls.
40
39
41
-
- The initial values for external variable declarations and for all **`static`** variables, whether external or internal, must be constant expressions. (For more information, see [Constant Expressions](../c-language/c-constant-expressions.md).) Since the address of any externally declared or static variable is constant, it can be used to initialize an internally declared **`static`** pointer variable. However, the address of an **`auto`** variable can't be used as a static initializer because it may be different for each execution of the block. You can use either constant or variable values to initialize **`auto`** and **`register`** variables.
40
+
- The initial values for external variable declarations and for all **`static`** variables, whether external or internal, must be constant expressions. For more information, see [Constant Expressions](../c-language/c-constant-expressions.md). Since the address of any externally declared or static variable is constant, it can be used to initialize an internally declared **`static`** pointer variable. However, the address of an **`auto`** variable can't be used as a static initializer because it may be different for each execution of the block. You can use either constant or variable values to initialize **`auto`** and **`register`** variables.
42
41
43
42
- If the declaration of an identifier has block scope, and the identifier has external linkage, the declaration can't have an initialization.
@@ -31,7 +30,7 @@ The term "r-value" is sometimes used to describe the value of an expression and
31
30
32
31
**Microsoft Specific**
33
32
34
-
Microsoft C includes an extension to the ANSI C standard that allows casts of l-values to be used as l-values, as long as the size of the object isn't lengthened through the cast. (For more information, see [Type-Cast Conversions](../c-language/type-cast-conversions.md).) The following example illustrates this feature:
33
+
Microsoft C includes an extension to the ANSI C standard that allows casts of l-values to be used as l-values, as long as the size of the object isn't lengthened through the cast. For more information, see [Type-Cast Conversions](../c-language/type-cast-conversions.md). The following example illustrates this feature:
@@ -50,7 +49,7 @@ void new( double x, double y, double z )
50
49
}
51
50
```
52
51
53
-
If at least one parameter occurs in the parameter list, the list can end with a comma followed by three periods (**`, ...`**). This construction, called the "ellipsis notation," indicates a variable number of arguments to the function. (For more information, see [Calls with a Variable Number of Arguments](../c-language/calls-with-a-variable-number-of-arguments.md).) However, a call to the function must have at least as many arguments as there are parameters before the last comma.
52
+
If at least one parameter occurs in the parameter list, the list can end with a comma followed by three periods (**`, ...`**). This construction, called the "ellipsis notation," indicates a variable number of arguments to the function. For more information, see [Calls with a Variable Number of Arguments](../c-language/calls-with-a-variable-number-of-arguments.md). However, a call to the function must have at least as many arguments as there are parameters before the last comma.
54
53
55
54
If no arguments are to be passed to the function, the list of parameters is replaced by the keyword **`void`**. This use of **`void`** is distinct from its use as a type specifier.
@@ -15,7 +14,7 @@ All identifiers except labels have their scope determined by the level at which
15
14
The declarator or type specifier for an identifier with file scope appears outside any block or list of parameters and is accessible from any place in the translation unit after its declaration. Identifier names with file scope are often called "global" or "external." The scope of a global identifier begins at the point of its definition or declaration and terminates at the end of the translation unit.
16
15
17
16
**Function scope**\
18
-
A label is the only kind of identifier that has function scope. A label is declared implicitly by its use in a statement. Label names must be unique within a function. (For more information about labels and label names, see [The goto and Labeled Statements](../c-language/goto-and-labeled-statements-c.md).)
17
+
A label is the only kind of identifier that has function scope. A label is declared implicitly by its use in a statement. Label names must be unique within a function. For more information about labels and label names, see [The goto and Labeled Statements](../c-language/goto-and-labeled-statements-c.md).
19
18
20
19
**Block scope**\
21
20
The declarator or type specifier for an identifier with block scope appears inside a block or within the list of formal parameter declarations in a function definition. It is visible only from the point of its declaration or definition to the end of the block containing its declaration or definition. Its scope is limited to that block and to any blocks nested in that block and ends at the curly brace that closes the associated block. Such identifiers are sometimes called "local variables."
@@ -43,7 +42,7 @@ A typedef declaration is interpreted in the same way as a variable or function d
43
42
44
43
A typedef declaration doesn't create new types. It creates synonyms for existing types, or names for types that could be specified in other ways. When a typedef name is used as a type specifier, it can be combined with certain type specifiers, but not others. Acceptable modifiers include **`const`** and **`volatile`**.
45
44
46
-
Typedef names share the name space with ordinary identifiers. (For more information, see [Name Spaces](../c-language/name-spaces.md).) Therefore, a program can have a typedef name and a local-scope identifier by the same name. For example:
45
+
Typedef names share the name space with ordinary identifiers. For more information, see [Name Spaces](../c-language/name-spaces.md). Therefore, a program can have a typedef name and a local-scope identifier by the same name. For example:
@@ -22,7 +21,7 @@ The Microsoft runtime library uses the following types of code pages:
22
21
23
22
also sets the locale to the system-default ANSI code page.
24
23
25
-
- Locale code page. The behavior of several run-time routines is dependent on the current locale setting, which includes the locale code page. (For more information, see [Locale](./locale.md).) By default, all locale-dependent routines in the Microsoft run-time library use the code page that corresponds to the "C" locale. At run time, you can change or query the locale code page in use with a call to [`setlocale`](./reference/setlocale-wsetlocale.md).
24
+
- Locale code page. The behavior of several run-time routines is dependent on the current locale setting, which includes the locale code page. For more information, see [Locale](./locale.md). By default, all locale-dependent routines in the Microsoft run-time library use the code page that corresponds to the "C" locale. At run time, you can change or query the locale code page in use with a call to [`setlocale`](./reference/setlocale-wsetlocale.md).
26
25
27
26
- Multibyte code page. The behavior of most of the multibyte-character routines in the run-time library depends on the current multibyte code page setting. By default, these routines use the system-default ANSI code page. At run-time you can query and change the multibyte code page with [`_getmbcp`](./reference/getmbcp.md) and [`_setmbcp`](./reference/setmbcp.md), respectively.
@@ -79,7 +78,7 @@ The **`_open`** function opens the file specified by *`filename`* and prepares i
79
78
|`_O_RDONLY`| Opens a file for reading only. Can't be specified with `_O_RDWR` or `_O_WRONLY`. |
80
79
|`_O_RDWR`| Opens a file for both reading and writing. Can't be specified with `_O_RDONLY` or `_O_WRONLY`. |
81
80
|`_O_SEQUENTIAL`| Specifies that caching is optimized for, but not restricted to, sequential access from disk. |
82
-
|`_O_TEXT`| Opens a file in ANSI text (translated) mode. (For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md).)|
81
+
|`_O_TEXT`| Opens a file in ANSI text (translated) mode. For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md). |
83
82
|`_O_TRUNC`| Opens a file and truncates it to zero length; the file must have write permission. Can't be specified with `_O_RDONLY`. `_O_TRUNC` used with `_O_CREAT` opens an existing file or creates a file. **Note:** The `_O_TRUNC` flag destroys the contents of the specified file. |
84
83
|`_O_WRONLY`| Opens a file for writing only. Can't be specified with `_O_RDONLY` or `_O_RDWR`. |
85
84
|`_O_U16TEXT`| Opens a file in Unicode UTF-16 mode. |
@@ -96,7 +95,7 @@ If **`_open`** is called with **`_O_WRONLY | _O_APPEND`** (append mode) and `_O_
96
95
97
96
When two or more manifest constants are used to form the *`oflag`* argument, the constants are combined with the bitwise-OR operator ( **`|`** ). For a discussion of binary and text modes, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md).
98
97
99
-
The *`pmode`* argument is required only when `_O_CREAT` is specified. If the file already exists, *`pmode`* is ignored. Otherwise, *`pmode`* specifies the file permission settings, which are set when the new file is closed the first time. **`_open`** applies the current file-permission mask to *`pmode`* before the permissions are set. (For more information, see [`_umask`](umask.md).)*`pmode`* is an integer expression that contains one or both of the following manifest constants, which are defined in `<sys\stat.h>`.
98
+
The *`pmode`* argument is required only when `_O_CREAT` is specified. If the file already exists, *`pmode`* is ignored. Otherwise, *`pmode`* specifies the file permission settings, which are set when the new file is closed the first time. **`_open`** applies the current file-permission mask to *`pmode`* before the permissions are set. For more information, see [`_umask`](umask.md). *`pmode`* is an integer expression that contains one or both of the following manifest constants, which are defined in `<sys\stat.h>`.
Copy file name to clipboardExpand all lines: docs/c-runtime-library/reference/sopen-s-wsopen-s.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -94,7 +94,7 @@ The integer expression *`oflag`* is formed by combining one or more manifest con
94
94
|`_O_RDONLY`| Opens a file for reading only. Can't be specified with `_O_RDWR` or `_O_WRONLY`. |
95
95
|`_O_RDWR`| Opens a file for both reading and writing. Can't be specified with `_O_RDONLY` or `_O_WRONLY`. |
96
96
|`_O_SEQUENTIAL`| Specifies that caching is optimized for, but not restricted to, sequential access from disk. |
97
-
|`_O_TEXT`| Opens a file in ANSI text (translated) mode. (For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md).)|
97
+
|`_O_TEXT`| Opens a file in ANSI text (translated) mode. For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md). |
98
98
|`_O_TRUNC`| Opens a file and truncates it to zero length; the file must have write permission. Can't be specified with `_O_RDONLY`. `_O_TRUNC` used with `_O_CREAT` opens an existing file or creates a file. **Note:** The `_O_TRUNC` flag destroys the contents of the specified file. |
99
99
|`_O_WRONLY`| Opens a file for writing only. Can't be specified with `_O_RDONLY` or `_O_RDWR`. |
100
100
|`_O_U16TEXT`| Opens a file in Unicode UTF-16 mode. |
@@ -88,7 +87,7 @@ The integer expression *`oflag`* is formed by combining one or more of the follo
88
87
|`_O_RDONLY`| Opens a file for reading only. Can't be specified with `_O_RDWR` or `_O_WRONLY`. |
89
88
|`_O_RDWR`| Opens a file for both reading and writing. Can't be specified with `_O_RDONLY` or `_O_WRONLY`. |
90
89
|`_O_SEQUENTIAL`| Specifies that caching is optimized for, but not restricted to, sequential access from disk. |
91
-
|`_O_TEXT`| Opens a file in ANSI text (translated) mode. (For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md).)|
90
+
|`_O_TEXT`| Opens a file in ANSI text (translated) mode. For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md). |
92
91
|`_O_TRUNC`| Opens a file and truncates it to zero length; the file must have write permission. Can't be specified with `_O_RDONLY`. `_O_TRUNC` used with `_O_CREAT` opens an existing file or creates a file. **Note:** The `_O_TRUNC` flag destroys the contents of the specified file. |
93
92
|`_O_WRONLY`| Opens a file for writing only. Can't be specified with `_O_RDONLY` or `_O_RDWR`. |
94
93
|`_O_U16TEXT`| Opens a file in Unicode UTF-16 mode. |
0 commit comments