自分のシステムにframa-cをインストールしました。それは、それはCのすべての暗黙的な変換をより拡張された形式にすべての私のコードを変換しない何オブジェクトコードを作成する前にコンパイラが暗黙的に変換したコードを生成するかどうか
..
(EG)
//私の実際のコード
if(opTab ==NULL || symTab ==NULL || intermediateFile==NULL || sourceCode ==NULL)
{
printf("\nError in opening file streams");
exit(EXIT_FAILURE);
}
// FRAMA-cは今、私の疑問は、オブジェクトPROGを作成する前に あるコード
if (opTab == (void *)0) {
printf((char const *)"\nError in opening file streams");
exit(1);
}
else {
if (symTab == (void *)0) {
printf((char const *)"\nError in opening file streams");
exit(1);
}
else {
if (intermediateFile == (void *)0) {
printf((char const *)"\nError in opening file streams");
exit(1);
}
else {
if (sourceCode == (void *)0) {
printf((char const *)"\nError in opening file streams");
exit(1);
}
}
}
}
を変換しましたram、Cコンパイラはすべて暗黙の変換を行うかどうか?
OR
かどうか、オブジェクトプログラムの作成時に、これらの暗黙的な変換は平行で行われますか?
OR
それは実装に依存しているのですか?もしそうなら、なぜですか?
私はあなたの説明がとても好きです。ただ明確にするために、Frama-Cは、コンパイラが行う以外に、テキストでメモリ上に 'double x =(double)n; 'を持たない。抽象構文木では、変換が明示的に行われます(標準では、 'x = n;'が意味するので、ほとんどのコンパイラがそうするでしょう)。 ASTがきれいに印刷されていることを要求した場合(例えば、デバッグの助けとして)、変換はテキストでのみ表示されます。 Thompson偉大な答えを@keith –
。ありがとうございました –