online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
#ifdef __cplusplus #include <iostream> #include "enum_n_e.h" auto& operator<<(std::ostream& s, N::E e) { return s << static_cast<unsigned int>(e); } int main() { std::cout << "C++: " << N::E::E1 << ' ' << N::E::E2 << ' ' <<N::E::E3 << std::endl; return 0; } #else #include <stdio.h> #include "enum_n_e.h" int main(void) { printf("C: %u %u %u\n", (unsigned int)N_E_E1, (unsigned int)N_E_E2, (unsigned int)N_E_E3); } #endif
// DON'T want include guards! // otherwise including several headers defining enums that way would fail! #ifdef __cplusplus #define ENUM_DEFINITION(NAMESPACE, NAME, CONTENT) \ namespace NAMESPACE \ { \ enum class NAME \ { \ CONTENT(NAMESPACE, NAME) \ }; \ } #define ENUM_ENTRY(N, E, V) V #else #define ENUM_DEFINITION(NAMESPACE, NAME, CONTENT) \ enum NAMESPACE##_##NAME \ { \ CONTENT(NAMESPACE, NAME) \ }; #define ENUM_ENTRY(N, E, V) ENUM_ENTRY_(N, E, V) #define ENUM_ENTRY_(N, E, V) N##_##E##_##V #endif
#undef ENUM_DEFINITION #undef ENUM_ENTRY #ifndef __cplusplus #undef ENUM_ENTRY_ #endif #undef ENUM_CALL #undef ENUM_CALL_
#ifndef ENUM_N_E_H_ #define ENUM_N_E_H_ #include "genEnumDefine.h" #define ENUM_N_E(NAMESPACE, NAME) \ ENUM_ENTRY(NAMESPACE, NAME, E1 = 1), \ ENUM_ENTRY(NAMESPACE, NAME, E2), \ ENUM_ENTRY(NAMESPACE, NAME, E3) ENUM_DEFINITION(N, E, ENUM_N_E) #include "genEnumUndef.h" #endif

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue