aboutsummaryrefslogtreecommitdiffstats
path: root/docs/source/lang/cpp/enum.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/source/lang/cpp/enum.rst')
-rw-r--r--docs/source/lang/cpp/enum.rst53
1 files changed, 53 insertions, 0 deletions
diff --git a/docs/source/lang/cpp/enum.rst b/docs/source/lang/cpp/enum.rst
new file mode 100644
index 0000000..ba82383
--- /dev/null
+++ b/docs/source/lang/cpp/enum.rst
@@ -0,0 +1,53 @@
+.. highlight:: cpp
+
+.. _lang-enum:
+
+``enum``
+========
+
+The ``enum`` keyword is used to specify an enumeration type. An
+enumeration type is a type whose values are taken from a specified,
+fixed list of constant values.
+
+Example
+-------
+
+Here's an example defining an enumeration type called ``weather``,
+which has values ``HOT``, ``COMFY``, and ``COLD``::
+
+ enum weather {HOT, COMFY, COLD};
+
+Once you've defined this type, you can create variables of type
+``weather``, in the same way you would with an :ref:`int <lang-int>`
+or a :ref:`long <lang-long>`::
+
+ // create a weather variable named theWeather, with value COMFY:
+ weather theWeather = COMFY;
+
+Enumeration types are useful within :ref:`switch statements
+<lang-switchcase>`. If you know that an argument is of an enumeration
+type, you can make ``case`` statements for all of that type's possible
+values, so you know you won't miss anything::
+
+ void describeWeather(weather currentWeather) {
+ switch(currentWeather) {
+ case HOT:
+ SerialUSB.println("it's hot out");
+ break;
+ case COMFY:
+ SerialUSB.println("it's nice today");
+ break;
+ case COLD:
+ SerialUSB.println("it's freezing!");
+ break;
+ }
+ }
+
+Such a ``switch`` statement would need no :ref:`default
+<lang-switchcase-default>`, since we know that ``currentWeather`` must
+be either ``HOT``, ``COMFY``, or ``COLD``.
+
+See Also
+--------
+
+- :ref:`lang-switchcase`