「C言語/関数」の版間の差分
削除された内容 追加された内容
ネストのローカル変数とグローバル変数 |
→ネストのローカル変数とグローバル変数: windows の visual studio での動作確認 |
||
732 行
なんらかの処理の中で、if文やfor文も使わずに <code>{ }</code> だけで処理をまとめた場合、その動作は難しい。
一例として、Linuxでgccおよびclangを標準C言語としてコンパイルした場合、
746 行
#include "string.h"
int main() {
int a = 3;
printf("ネストの前 %d \n", a);
{
int a = 10; // int で再度、宣言
printf("ネストの内部 %d \n", a);
}
printf("ネストを抜けた %d \n", a);
}
769 行
</pre>
:(※ 動作確認: GCCおよびClangで、Fedora32上で2020年6月25日に動作を確認)
:(※ 動作確認: Windows の Visual Studio 2019でも2020年6月25日に動作を確認。 ただしC++なので <code> #include <iostream> </code> が必要。)
なおWindows版のclangはvisual studio のコンパイラを呼び出す方式であるので、試行を省略する。
779 ⟶ 782行目:
#include "string.h"
int main() {
int a = 3;
printf("ネストの前 %d \n", a);
{
a = 10; // int が無くても実行可能
printf("ネストの内部 %d \n", a);
}
printf("ネストを抜けた %d \n", a);
}
802 ⟶ 805行目:
</pre>
:(※ 動作確認: GCCおよびClangで、Fedora32上で2020年6月25日に動作を確認)
:(※ 動作確認: Windows の Visual Studio 2019でも2020年6月25日に動作を確認。 ただしC++なので <code> #include <iostream> </code> が必要。)
827 ⟶ 831行目:
だが、コンパイラの種類ごとに、規格にない機能が異なる場合もあるので、互換性などの観点からは、あまり規格外の機能は用いないほうが安全である。
== 脚注・出典など ==
|