2017-03-22 13 views
1

intがC++にあるものを再定義することはできますか?C++での基本型の再定義

コンピュータ上でArduinoコードをシミュレートしたいからです。は、がArduinoコードを変更していないためです。たとえば、同じ方法でオーバーフローを示すために、intは、マシン上の32ビットの代わりに16ビットである必要があります。

typedef int16_t int; 

のと同様のArduinoが使用する他のデータ型のために同じことをやって:

だから基本的に私はしたいです。それがエラーをスローとして

しかし、私は(当然)、それが可能だとは思わない:

error: cannot combine with previous 'type-name' declaration specifier 

は、私は簡単にこれを行うことができます方法はありますか?

+0

おそらくコードに触れることなくそれを行う唯一の方法は、コンパイラスイッチです。どちらがgccドキュメントに存在する場合はそれをリストするべきかは不明です。 –

+0

あなたは '#define int int16_t'のような何かをすることができます –

+0

@VadaPochéキーワードの後に​​名前が付けられたマクロを定義すると、未定義の動作が示されます。 –

答えて

1

あなたはintを再定義することはできませんが、ストップ書き込みintの面でコードとは次のようにタイプエイリアスを使用することができます。

typedef int int_type; 

int main() 
{ 
    int_type i = 0; 

    // etc... 
} 

が次にあなたが欲しい時にタイプを切り替えることができます

typedef int16_t int_type; // now using 16 bit integers 
関連する問題