|
3 | 3 | <a href=https://github.com/protocolbuffers/protocolbuffers.github.io/edit/main/content/reference/cpp/cpp-generated.md class=td-page-meta--edit target=_blank rel=noopener><i class="fa-solid fa-pen-to-square fa-fw"></i> Edit this page</a> |
4 | 4 | <a href="https://github.com/protocolbuffers/protocolbuffers.github.io/new/main/content/reference/cpp/cpp-generated.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+the+top+of+the+page+%28weight+controls+how+its+ordered+amongst+other+pages+in+the+same+directory%3B+lowest+number+first%29.%0A%2A+Add+a+good+commit+message+at+the+bottom+of+the+page+%28%3C80+characters%3B+use+the+extended+description+field+for+more+detail%29.%0A%2A+Create+a+new+branch+so+you+can+preview+your+new+file+and+request+a+review+via+Pull+Request.%0A" class=td-page-meta--child target=_blank rel=noopener><i class="fa-solid fa-pen-to-square fa-fw"></i> Create child page</a> |
5 | 5 | <a href="https://github.com/protocolbuffers/protocolbuffers.github.io/issues/new?title=C++%20Generated%20Code%20Guide" class=td-page-meta--issue target=_blank rel=noopener><i class="fa-solid fa-list-check fa-fw"></i> Create documentation issue</a> |
6 | | -<a href=https://github.com/protocolbuffers/protobuf/issues/new class=td-page-meta--project-issue target=_blank rel=noopener><i class="fa-solid fa-list-check fa-fw"></i> Create project issue</a></div><div class=td-toc><nav id=TableOfContents><ul><li><a href=#invocation>Compiler Invocation</a></li><li><a href=#package>Packages</a></li><li><a href=#message>Messages</a><ul><li><a href=#generated-filenames>Generated Filenames</a></li><li><a href=#nested-types>Nested Types</a></li></ul></li><li><a href=#fields>Fields</a><ul><li><a href=#numeric>Explicit Presence Numeric Fields</a></li><li><a href=#implicit-numeric>Implicit Presence Numeric Fields</a></li><li><a href=#string>Explicit Presence String/Bytes Fields</a></li><li><a href=#implicit-string>Implicit Presence String/Bytes Fields</a></li><li><a href=#cord>Singular Bytes Fields with Cord Support</a></li><li><a href=#enum_field>Explicit Presence Enum Fields</a></li><li><a href=#implicit-enum>Implicit Presence Enum Fields</a></li><li><a href=#embeddedmessage>Explicit Presence Embedded Message Fields</a></li><li><a href=#repeatednumeric>Repeated Numeric Fields</a></li><li><a href=#repeatedstring>Repeated String Fields</a></li><li><a href=#repeated_enum>Repeated Enum Fields</a></li><li><a href=#repeatedmessage>Repeated Embedded Message Fields</a></li><li><a href=#oneof-numeric>Oneof Numeric Fields</a></li><li><a href=#oneof-string>Oneof String Fields</a></li><li><a href=#oneof-enum>Oneof Enum Fields</a></li><li><a href=#oneof-embedded>Oneof Embedded Message Fields</a></li><li><a href=#map>Map Fields</a></li></ul></li><li><a href=#any>Any</a></li><li><a href=#oneof>Oneof</a></li><li><a href=#enum>Enumerations</a></li><li><a href=#extension>Extensions (proto2 and editions only)</a></li><li><a href=#arena>Arena Allocation</a></li><li><a href=#service>Services</a><ul><li><a href=#interface>Interface</a></li><li><a href=#stub>Stub</a></li></ul></li><li><a href=#plugins>Plugin Insertion Points</a></li></ul></nav></div></aside><main class="col-12 col-md-9 col-xl-8 ps-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/reference/>Reference Guides</a></li><li class=breadcrumb-item><a href=/reference/cpp/>C++</a></li><li class="breadcrumb-item active" aria-current=page>Generated Code Guide</li></ol></nav><div class=td-content><h1>C++ Generated Code Guide</h1><div class=lead>Describes exactly what C++ code the protocol buffer compiler generates for any given protocol definition.</div><header class=article-meta></header><p>Any differences between proto2, proto3, and editions generated code are |
| 6 | +<a href=https://github.com/protocolbuffers/protobuf/issues/new class=td-page-meta--project-issue target=_blank rel=noopener><i class="fa-solid fa-list-check fa-fw"></i> Create project issue</a></div><div class=td-toc><nav id=TableOfContents><ul><li><a href=#invocation>Compiler Invocation</a></li><li><a href=#package>Packages</a></li><li><a href=#message>Messages</a><ul><li><a href=#generated-fieldnames>Generated Fieldnames</a></li><li><a href=#nested-types>Nested Types</a></li></ul></li><li><a href=#fields>Fields</a><ul><li><a href=#numeric>Explicit Presence Numeric Fields</a></li><li><a href=#implicit-numeric>Implicit Presence Numeric Fields</a></li><li><a href=#string>Explicit Presence String/Bytes Fields</a></li><li><a href=#implicit-string>Implicit Presence String/Bytes Fields</a></li><li><a href=#cord>Singular Bytes Fields with Cord Support</a></li><li><a href=#enum_field>Explicit Presence Enum Fields</a></li><li><a href=#implicit-enum>Implicit Presence Enum Fields</a></li><li><a href=#embeddedmessage>Explicit Presence Embedded Message Fields</a></li><li><a href=#repeatednumeric>Repeated Numeric Fields</a></li><li><a href=#repeatedstring>Repeated String Fields</a></li><li><a href=#repeated_enum>Repeated Enum Fields</a></li><li><a href=#repeatedmessage>Repeated Embedded Message Fields</a></li><li><a href=#oneof-numeric>Oneof Numeric Fields</a></li><li><a href=#oneof-string>Oneof String Fields</a></li><li><a href=#oneof-enum>Oneof Enum Fields</a></li><li><a href=#oneof-embedded>Oneof Embedded Message Fields</a></li><li><a href=#map>Map Fields</a></li></ul></li><li><a href=#any>Any</a></li><li><a href=#oneof>Oneof</a></li><li><a href=#enum>Enumerations</a></li><li><a href=#extension>Extensions (proto2 and editions only)</a></li><li><a href=#arena>Arena Allocation</a></li><li><a href=#service>Services</a><ul><li><a href=#interface>Interface</a></li><li><a href=#stub>Stub</a></li></ul></li><li><a href=#plugins>Plugin Insertion Points</a></li></ul></nav></div></aside><main class="col-12 col-md-9 col-xl-8 ps-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/reference/>Reference Guides</a></li><li class=breadcrumb-item><a href=/reference/cpp/>C++</a></li><li class="breadcrumb-item active" aria-current=page>Generated Code Guide</li></ol></nav><div class=td-content><h1>C++ Generated Code Guide</h1><div class=lead>Describes exactly what C++ code the protocol buffer compiler generates for any given protocol definition.</div><header class=article-meta></header><p>Any differences between proto2, proto3, and editions generated code are |
7 | 7 | highlighted. Note that these differences are in the generated code as described |
8 | 8 | in this document, not the base message classes/interfaces, which are the same in |
9 | 9 | all versions. You should read the |
|
74 | 74 | of <code>Foo</code> which is identical to a newly-constructed instance of <code>Foo</code> (so all |
75 | 75 | singular fields are unset and all repeated fields are empty). Note that the |
76 | 76 | default instance of a message can be used as a factory by calling its |
77 | | -<code>New()</code> method.</li></ul><h3 id=generated-filenames>Generated Filenames</h3><p><a href=https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/compiler/cpp/helpers.cc#L4>Reserved keywords</a> |
| 77 | +<code>New()</code> method.</li></ul><p><a id=generated-filenames></a></p><h3 id=generated-fieldnames>Generated Fieldnames</h3><p><a href=https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/compiler/cpp/helpers.cc#L4>Reserved keywords</a> |
78 | 78 | are appended with an underscore in the generated output.</p><p>For example, the following proto3 definition syntax:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-proto data-lang=proto><span style=display:flex><span><span style=color:#204a87;font-weight:700>message</span> <span style=color:#000>MyMessage</span> <span style=color:#000;font-weight:700>{</span><span style=color:#a40000> |
79 | 79 | </span></span></span><span style=display:flex><span><span style=color:#a40000></span> <span style=color:#204a87;font-weight:700>string</span> <span style=color:#204a87;font-weight:700>false</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#0000cf;font-weight:700>1</span><span style=color:#000;font-weight:700>;</span><span style=color:#a40000> |
80 | 80 | </span></span></span><span style=display:flex><span><span style=color:#a40000></span> <span style=color:#204a87;font-weight:700>string</span> <span style=color:#000>myFalse</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#0000cf;font-weight:700>2</span><span style=color:#000;font-weight:700>;</span><span style=color:#a40000> |
|
0 commit comments