【掲示板ご利用上の注意】
※題名は具体的に! ※学校の課題の丸投げ禁止! ※ソースの添付は「HTML変換ツール」で字下げ! ※返信の引用は最小限に! ※環境(OSとコンパイラ)や症状は具体的に詳しく! ※返信付き投稿の削除は禁止! ※マルチポスト(多重投稿)は慎んで! 詳しくはこちら
本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。 守ってくださいね。お願いします。(by管理人)
C言語ソース⇒HTML形式ツール掲示板2はこちら
#include <stdio.h> static int a = 5; extern int a; int main(void) { printf("a = %d\n", a); return 0; }
#include <stdio.h> static char str[] = "内部結合"; int main(void) { static char str[] = "無結合"; { extern char str[]; /* externが無効なら不完全型になってしまう */ puts(str); } return 0; }
extern char str[]; /* externが無効なら不完全型になってしまう */ puts(str);
その通りです。 やっと理解できました。 #include <stdio.h> (1)ファイル有効範囲の識別子に static 指定などで 内部結合 static char str[] = "内部結合"; (1) int main(void) { (2)ブロック有効範囲の識別子なので無結合 static char str[] = "無結合";(2) { (3)以前の宣言で、内部結合又は外部結合、指定されてる場合は 以前の宣言と同じ結合を持つ。(2) は無結合なので (1) と同じ 内部結合になり、(1) と同じオブジェクトを参照する。 extern char str[];(3) puts(str); } return 0; }