CとC++の混在時に悩む

Monaでのコーディングは基本 C++ なのだけどシステムコールや uIP など C で書かれたアプリケーションが混じるときに微妙。


enum を使って下の IP::ICMP のように定数を定義していても、Cが混じる場合は使えない。(namespace も同様)

class IP {
public:
    enum {
        ICMP = 0x01,
        UDP  = 0x11,
    };
    typedef struct{
        uint8_t  verhead;
        uint8_t  tos;
        uint16_t len;
        uint16_t id;
        uint16_t frag;
        uint8_t  ttl;
        uint8_t  prot;
        uint16_t chksum;
        uint32_t srcip;
        uint32_t dstip;
        char     data[0];
    } Header;
略

いっそのこと C++ only にしたいが無理だろうな。