1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2025-09-16 09:06:18 +02:00

Add coding standards for String constants.

This commit is contained in:
David Steele
2018-12-04 11:46:25 -05:00
parent 14190f9e6c
commit 0db030fa63
3 changed files with 40 additions and 2 deletions

View File

@@ -32,12 +32,27 @@ Type names use camel case with the first letter upper case:
`#define` constants should be all caps with `_` separators. `#define` constants should be all caps with `_` separators.
```c ```c
#DEFINE MY_CONSTANT "STRING" #define MY_CONSTANT "STRING"
``` ```
The value should be aligned at column 69 whenever possible. The value should be aligned at column 69 whenever possible.
This type of constant should mostly be used for strings. Use enums whenever possible for integer constants. This type of constant should mostly be used for strings. Use enums whenever possible for integer constants.
**String Constants**
String constants can be declared using the `STRING_STATIC()` macro for local strings and `STRING_EXTERN()` for strings that will be extern'd for use in other modules.
Extern'd strings should be declared in the header file as:
```c
#define SAMPLE_VALUE "STRING"
STRING_DECLARE(SAMPLE_VALUE_STR);
```
And in the C file as:
```c
STRING_EXTERN(SAMPLE_VALUE_STR, SAMPLE_VALUE);
```
Static strings declared in the C file are not required to have a `#define` if the `#define` version is not used. Extern'd strings must always have the `#define` in the header file.
**Enum Constants** **Enum Constants**
Enum elements follow the same case rules as variables. They are strongly typed so this shouldn't present any confusion. Enum elements follow the same case rules as variables. They are strongly typed so this shouldn't present any confusion.

View File

@@ -46,13 +46,32 @@
<p><code>#define</code> constants should be all caps with <id>_</id> separators.</p> <p><code>#define</code> constants should be all caps with <id>_</id> separators.</p>
<code-block type="c"> <code-block type="c">
#DEFINE MY_CONSTANT "STRING" #define MY_CONSTANT "STRING"
</code-block> </code-block>
<p>The value should be aligned at column 69 whenever possible.</p> <p>The value should be aligned at column 69 whenever possible.</p>
<p>This type of constant should mostly be used for strings. Use enums whenever possible for integer constants.</p> <p>This type of constant should mostly be used for strings. Use enums whenever possible for integer constants.</p>
<p><b>String Constants</b></p>
<p>String constants can be declared using the <code>STRING_STATIC()</code> macro for local strings and <code>STRING_EXTERN()</code> for strings that will be extern'd for use in other modules.</p>
<p>Extern'd strings should be declared in the header file as:</p>
<code-block type="c">
#define SAMPLE_VALUE "STRING"
STRING_DECLARE(SAMPLE_VALUE_STR);
</code-block>
<p>And in the C file as:</p>
<code-block type="c">
STRING_EXTERN(SAMPLE_VALUE_STR, SAMPLE_VALUE);
</code-block>
<p>Static strings declared in the C file are not required to have a <code>#define</code> if the <code>#define</code> version is not used. Extern'd strings must always have the <code>#define</code> in the header file.</p>
<p><b>Enum Constants</b></p> <p><b>Enum Constants</b></p>
<p>Enum elements follow the same case rules as variables. They are strongly typed so this shouldn't present any confusion.</p> <p>Enum elements follow the same case rules as variables. They are strongly typed so this shouldn't present any confusion.</p>

View File

@@ -121,6 +121,10 @@
<p>Return <code>IoFilterGroup *</code> from <code>ioFilterGroupAdd()</code>.</p> <p>Return <code>IoFilterGroup *</code> from <code>ioFilterGroupAdd()</code>.</p>
</release-item> </release-item>
<release-item>
<p>Add coding standards for <code>String</code> constants.</p>
</release-item>
<release-item> <release-item>
<p>Add missing <code>LOG_DEBUG()</code> macro.</p> <p>Add missing <code>LOG_DEBUG()</code> macro.</p>
</release-item> </release-item>