An open API service indexing awesome lists of open source software.

https://github.com/noraworld/c-playground

A playground for C language
https://github.com/noraworld/c-playground

Last synced: 7 months ago
JSON representation

A playground for C language

Awesome Lists containing this project

README

          

# C-playground
C言語のちょっとしたテストコードや遊びで作ったコードを公開するためのリポジトリです

## linking_object_code
リンカが外部参照名を解決するためにオブジェクトファイルに記録している情報を確認するためのテストコード

### Usage
#### Cのコードからオブジェクトファイルを生成する
```bash
$ gcc -c sample1.c -o sample1.o
$ gcc -c sample2.c -o sample2.o
```

#### オブジェクトファイルの中身を確認する
```bash
$ nm sample1.o
$ nm sample2.o
```
未定義のシンボルが存在しても結合の際に定義済みのシンボルが存在した場合はリンカが外部参照名を解決することができる。参考: [あるシンボルがどのオブジェクトファイル/共有オブジェクトに含まれているか検索するスクリプト](http://d.hatena.ne.jp/aki-yam/20091122/1258905636)

#### 二つのオブジェクトファイルを結合しコンパイルする
```bash
$ gcc -o sample sample1.o sample2.o
```
コンパイルエラーが発生しなかった場合、リンカは外部参照名を解決したと言える

## copyimage
C言語で画像をコピーするだけのプログラム

### Usage
まず`logo.png`という画像ファイルをC言語のソースコードと同じディレクトリに置きます。

コンパイルして実行します。

```bash
$ gcc -o copyimage copyimage.c
$ ./copyimage
```

実行すると`logo.png`がコピーされ、同じディレクトリに`copy.png`というファイル名で生成されます。

### Modification
コピー元、コピー先のファイル名は、それぞれ `*fname_r`, `*fname_w` の値を変更してください。標準入力から受け付けるように改変してもよいかもしれません。

### Digression
このプログラムは、授業の演習で、C言語で画像をコピーする必要があったため、テスト用に作成しました。そのため実装が非常に雑ですがご了承ください。