No, but byte is. C++ and the Arduino programming language that is based on it are case-sensitive.
Meric:
But, after a quick google search, Byte seems not to be part of native C, but a sort of reconstruction.
There's no magic to it. typedef is part of native C and C++:
typedef uint8_t byte;
Meric:
Is my switch will be functional ?
Yes.
Meric:
Is using Byte is a good design choice ?
From the standpoint of making code friendly to beginners, I think so. Compare it to the alternatives: unsigned char or uint8_t.
From the standpoint of making your code portable outside of Arduino, perhaps not so much.
I was involved in an initiative to discourage the use of the Arduino core typedef boolean in favor of the standard bool, which you can see has received official status:
boolean is a non-standard type alias for bool defined by Arduino. It’s recommended to instead use the standard type bool, which is identical.
In that case, I didn't feel that the benefits of the slightly more beginner friendly boolean outweighed the disadvantages of using a non-portable type alias. However, my feelings are different when it comes to byte.
No, but byte is. C++ and the Arduino programming language that is based on it are case-sensitive.
Sorry, a reflex to put a B for byte, and a b for bit. I'm indeed talking about byte, and I'm not trying to declare a "Byte".
typedef uint8_t byte;
That is interesting. So the uint8_t is more "native" than the byte. Out of portability matters, is using byte instead of uint8_t imply somewhere a loss of performance, or not at all ?
About the bool, I was even not aware about the "boolean" existence ^^
Do you mean "include a lib" and "define a type"? You have to be careful with terminology or things get confusing really fast.
Type definitions don't generate any code, they are only instructions for the compiler to handle identifiers in a certain way. So including a library that provides some type definition certainly won't impact code generation. An optimizing compiler (like AVR-GCC and most others) does not compile unused code. That also applies to libraries.
Yes you are wrong. I told you already there is no difference. The inclusion with #include just pastes all the library text in front of the main program, before compilation. So by the time it sees some redefinition, it already knows the definition. Even so, it wouldn't matter when it comes to code generation because all the machinations of the compiler, including identifiers and definitions, are thrown out the window at that time.
A definitive answer to your main question, "is byte a good choice" depends on what you are doing with the data.