diff --git a/extern/Makefile b/extern/Makefile deleted file mode 100644 index 49ff7ba..0000000 --- a/extern/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -CC = gcc -CFLAGS = -Wall -MMD -LDFLAGS = -lm -SRCS = $(wildcard *.c) -OBJS = $(SRCS:.c=.o) -DEPS = $(OBJS:.o=.d) -TARGET = a.out - -all: $(TARGET) - -$(TARGET): $(OBJS) - $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) - --include $(DEPS) - -%.o: %.c - $(CC) $(CFLAGS) -c $< -o $@ $(LDFLAGS) - -clean: - rm -f $(OBJS) $(DEPS) $(TARGET) - - diff --git a/extern/p.c b/extern/p.c deleted file mode 100644 index fce8568..0000000 --- a/extern/p.c +++ /dev/null @@ -1,12 +0,0 @@ -// gcc p.c q.c -lm でビルド -// ./a.out で実行 - -#include -#include "q.h" - -int main(){ - float d = 1.23; - int id = q(d); - printf("floor(d) = %d\n", id); - return 0; -} diff --git a/extern/q.c b/extern/q.c deleted file mode 100644 index 706d771..0000000 --- a/extern/q.c +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include - -int q(float x) -{ - printf("d = %f\n", x*2); - return floor(x*2); -} diff --git a/extern/q.h b/extern/q.h deleted file mode 100644 index 771b0f1..0000000 --- a/extern/q.h +++ /dev/null @@ -1,5 +0,0 @@ -// q.h - -extern int q(float); - - diff --git a/extern_func/Makefile b/extern_func/Makefile new file mode 100644 index 0000000..99385a7 --- /dev/null +++ b/extern_func/Makefile @@ -0,0 +1,31 @@ +CC = gcc +CFLAGS = -Wall -MMD +LDFLAGS = -lm +SRCS = $(wildcard *.c) +OBJS = $(SRCS:.c=.o) +DEPS = $(OBJS:.o=.d) +PRES = $(OBJS:.o=.i) +TARGET = a.out + +all: $(TARGET) + +$(TARGET): $(OBJS) + $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) + +-include $(DEPS) + +%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ $(LDFLAGS) + +# プリプロセスのみ実行して .i ファイルを出力 +pre: + @for f in $(SRCS); do \ + base=$$(basename $$f .c); \ + $(CC) -E $(CFLAGS) $(DEFS) $(INCDIR) $$f $(LDFLAGS) -o $$base.i; \ + echo "Preprocessed $$f -> $$base.i"; \ + done + +clean: + rm -f $(OBJS) $(DEPS) $(TARGET) $(PRES) + + diff --git a/extern_func/p.c b/extern_func/p.c new file mode 100644 index 0000000..fce8568 --- /dev/null +++ b/extern_func/p.c @@ -0,0 +1,12 @@ +// gcc p.c q.c -lm でビルド +// ./a.out で実行 + +#include +#include "q.h" + +int main(){ + float d = 1.23; + int id = q(d); + printf("floor(d) = %d\n", id); + return 0; +} diff --git a/extern_func/q.c b/extern_func/q.c new file mode 100644 index 0000000..706d771 --- /dev/null +++ b/extern_func/q.c @@ -0,0 +1,8 @@ +#include +#include + +int q(float x) +{ + printf("d = %f\n", x*2); + return floor(x*2); +} diff --git a/extern_func/q.h b/extern_func/q.h new file mode 100644 index 0000000..ae59f39 --- /dev/null +++ b/extern_func/q.h @@ -0,0 +1,6 @@ +// q.h + +extern int q(float); + +// int q(float); プロトタイプ宣言でも同じ + diff --git a/extern_variable/Makefile b/extern_variable/Makefile new file mode 100644 index 0000000..99385a7 --- /dev/null +++ b/extern_variable/Makefile @@ -0,0 +1,31 @@ +CC = gcc +CFLAGS = -Wall -MMD +LDFLAGS = -lm +SRCS = $(wildcard *.c) +OBJS = $(SRCS:.c=.o) +DEPS = $(OBJS:.o=.d) +PRES = $(OBJS:.o=.i) +TARGET = a.out + +all: $(TARGET) + +$(TARGET): $(OBJS) + $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) + +-include $(DEPS) + +%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ $(LDFLAGS) + +# プリプロセスのみ実行して .i ファイルを出力 +pre: + @for f in $(SRCS); do \ + base=$$(basename $$f .c); \ + $(CC) -E $(CFLAGS) $(DEFS) $(INCDIR) $$f $(LDFLAGS) -o $$base.i; \ + echo "Preprocessed $$f -> $$base.i"; \ + done + +clean: + rm -f $(OBJS) $(DEPS) $(TARGET) $(PRES) + + diff --git a/extern_variable/data.c b/extern_variable/data.c new file mode 100644 index 0000000..0377d2f --- /dev/null +++ b/extern_variable/data.c @@ -0,0 +1,4 @@ +// data.c + +int shared_var = 173; + diff --git a/extern_variable/main.c b/extern_variable/main.c new file mode 100644 index 0000000..510445e --- /dev/null +++ b/extern_variable/main.c @@ -0,0 +1,9 @@ +// main.c +#include + +extern int shared_var; + +int main(void){ + printf("shared_var = %d\n", shared_var); + return 0; +} diff --git a/static_variable/Makefile b/static_variable/Makefile new file mode 100644 index 0000000..99385a7 --- /dev/null +++ b/static_variable/Makefile @@ -0,0 +1,31 @@ +CC = gcc +CFLAGS = -Wall -MMD +LDFLAGS = -lm +SRCS = $(wildcard *.c) +OBJS = $(SRCS:.c=.o) +DEPS = $(OBJS:.o=.d) +PRES = $(OBJS:.o=.i) +TARGET = a.out + +all: $(TARGET) + +$(TARGET): $(OBJS) + $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) + +-include $(DEPS) + +%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ $(LDFLAGS) + +# プリプロセスのみ実行して .i ファイルを出力 +pre: + @for f in $(SRCS); do \ + base=$$(basename $$f .c); \ + $(CC) -E $(CFLAGS) $(DEFS) $(INCDIR) $$f $(LDFLAGS) -o $$base.i; \ + echo "Preprocessed $$f -> $$base.i"; \ + done + +clean: + rm -f $(OBJS) $(DEPS) $(TARGET) $(PRES) + + diff --git a/static_variable/data.c b/static_variable/data.c new file mode 100644 index 0000000..a4163a2 --- /dev/null +++ b/static_variable/data.c @@ -0,0 +1,8 @@ +// data.c + +static int internal_var = 876; + +int get_internal_var(){ + return internal_var; +} + diff --git a/static_variable/main.c b/static_variable/main.c new file mode 100644 index 0000000..1ced750 --- /dev/null +++ b/static_variable/main.c @@ -0,0 +1,12 @@ +// main.c +#include + +// extern int internal_var; +extern int get_internal_var(); + +int main(void){ + // printf("internal_var = %d\n", internal_var); + printf("internal_var = %d\n", get_internal_var() ); + return 0; +} +