🐈

neo-c2 version 2.0.3リリースです

2021/12/29に公開

listやvectorの引数に構造体のポインタでなく値が入っているとsublistなどがエラーとなってましたが
修正しています。

struct ZVALUE {
   enum { kIntValue, kStringValue } kind;
   union {
       int intValue;
       char* stringValue;
   } value;
};

int main() {
    list<ZVALUE>* li = new list<ZVALUE>.initialize();
    
    ZVALUE value1;
    value1.kind = kIntValue;
    value1.value.intValue = 123;
    
    li.push_back(value1);
    
    ZVALUE value2;
    value1.kind = kStringValue;
    value1.value.stringValue = "AAA";

    li.push_back(value2);
    
    list<ZVALUE>* li2 = li.sublist(0,1);
    
    return 0;
}

sublistのGenericsの引数がポインタでなく値であるため内部のGC_is_heap_ptrの呼び出しの引数に渡している型がポインタでなく構造体の値となってしまいエラーとなってましたがちゃんとコンパイルが通るようになってます。

viクローンとpythonクローンをneo-c2で作っていますが、特にバグもなく、普通のCコンパイラと遜色のない感じで使えてます。よかったらどうぞ。C++よりなシンプルでジェネリクスやコレクションや文字列ライブラリがあるCコンパイラです。
よかったらどうぞ。

https://github.com/ab25cq/neo-c2

Discussion