C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 147
http://mevius.5ch.net/test/read.cgi/tech/1534430162/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 148
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウカー Sacf-slpW)
2018/09/19(水) 17:56:50.83ID:XSTNMnDwa236デフォルトの名無しさん (ワッチョイ 2e81-coYL)
2018/09/25(火) 22:54:26.26ID:1135EyDF0 WindowsAPI毎Macに移植するのであれば、動くかも知れませんね
237デフォルトの名無しさん (ワッチョイ 2260-9U/T)
2018/09/25(火) 23:06:10.30ID:CZcrESgD0 >>235
>WindowsAPIってのはC言語で実装されてる
win32api(≒WindowsAPI) は C から呼び出せるようになっているのではありますが、
win32api の実体が存在するかどうかは、また別の話になります
mac にて windows 向けのコードを実行させるための手段があるかどうかは、私にはよくわかりません
(wine とかが移植されているのですか?)
>WindowsAPIってのはC言語で実装されてる
win32api(≒WindowsAPI) は C から呼び出せるようになっているのではありますが、
win32api の実体が存在するかどうかは、また別の話になります
mac にて windows 向けのコードを実行させるための手段があるかどうかは、私にはよくわかりません
(wine とかが移植されているのですか?)
238デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/25(火) 23:09:30.90ID:Ig86RmNy0 >>237
WindowsAPIを書いてる言語はバイナリってことですか?
WindowsAPIを書いてる言語はバイナリってことですか?
239デフォルトの名無しさん (ワッチョイ c212-yqSl)
2018/09/25(火) 23:18:34.02ID:HAbRzuEs0 ソースコード全部をgithubに乗せれば話は早いです
要するに、現物を見るのが手っ取り早いです
要するに、現物を見るのが手っ取り早いです
240デフォルトの名無しさん (ワッチョイ 42d2-MW2F)
2018/09/25(火) 23:18:38.51ID:SjmRGAva0 CPU
OS
ソースコード
実行ファイル
ライブラリ
API
この辺の理解がごっちゃになってるな
もしくは釣り
OS
ソースコード
実行ファイル
ライブラリ
API
この辺の理解がごっちゃになってるな
もしくは釣り
241デフォルトの名無しさん (ワッチョイ 2e81-coYL)
2018/09/25(火) 23:23:33.73ID:1135EyDF0 試しに、VCではなく、GCCコンパイラ使って、
ソース修正せずに実行プログラムが作成出来るかな?
ソース修正せずに実行プログラムが作成出来るかな?
242デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/25(火) 23:37:13.97ID:Ig86RmNy0 >>240
釣りではないです
大学では
バイナリ→アセンブリ→C言語→WinAPIやJava→高級言語(DirectXなどのライブラリ)
→統合環境(VisualStudio)
の順番で言語規模が高性能化するって習いました
高級言語→C言語にするには実行環境が必要ですが
そもそもC言語であるならば、OSが直接読み込める形であるのだから
どんなOSでも動くという理解です。
間違っていますか?
大学でしないといけないのはプログラミングではなく言語体系についての
理解をレポートにしなきゃならないので
釣りではないです
大学では
バイナリ→アセンブリ→C言語→WinAPIやJava→高級言語(DirectXなどのライブラリ)
→統合環境(VisualStudio)
の順番で言語規模が高性能化するって習いました
高級言語→C言語にするには実行環境が必要ですが
そもそもC言語であるならば、OSが直接読み込める形であるのだから
どんなOSでも動くという理解です。
間違っていますか?
大学でしないといけないのはプログラミングではなく言語体系についての
理解をレポートにしなきゃならないので
243デフォルトの名無しさん (ワッチョイ 01f2-coYL)
2018/09/25(火) 23:41:58.98ID:Jw6NGqaL0 中学生が背伸びしてるのかと思ったが大学生かよ。
244デフォルトの名無しさん (ワッチョイ 6175-yLbS)
2018/09/25(火) 23:42:20.18ID:AGUJmjmE0 >大学では
>バイナリ→アセンブリ→C言語→WinAPIやJava→高級言語(DirectXなどのライブラリ)
→統合環境(VisualStudio)
>の順番で言語規模が高性能化するって習いました
どんな教育だよ...
>バイナリ→アセンブリ→C言語→WinAPIやJava→高級言語(DirectXなどのライブラリ)
→統合環境(VisualStudio)
>の順番で言語規模が高性能化するって習いました
どんな教育だよ...
245デフォルトの名無しさん (ワッチョイ 22f9-xOzC)
2018/09/25(火) 23:46:38.07ID:J8LSZpTD0246デフォルトの名無しさん (ワッチョイ c980-yqSl)
2018/09/25(火) 23:46:38.88ID:xp1IDT0a0 訂正するのがめんどいぐらいいっぱいまちがってる
247デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/25(火) 23:53:43.26ID:Ig86RmNy0248デフォルトの名無しさん (ワッチョイ c212-yqSl)
2018/09/25(火) 23:54:12.64ID:HAbRzuEs0 >C言語であるならば、OSが直接読み込める形であるのだから
>どんなOSでも動く
しゅごい
>どんなOSでも動く
しゅごい
249デフォルトの名無しさん (ワッチョイ 6175-yLbS)
2018/09/25(火) 23:55:06.09ID:AGUJmjmE0 >高級言語→C言語にするには実行環境が必要ですが
「そもそもC言語であるならば、OSが直接読み込める形であるのだから
>どんなOSでも動くという理解です。
C言語は各マシンそれぞれのCPUやOSに対応した適切なコンパイラとAPIでコンパイルしないと動きません。
「そもそもC言語であるならば、OSが直接読み込める形であるのだから
>どんなOSでも動くという理解です。
C言語は各マシンそれぞれのCPUやOSに対応した適切なコンパイラとAPIでコンパイルしないと動きません。
250デフォルトの名無しさん (ワッチョイ 22f9-xOzC)
2018/09/25(火) 23:57:02.58ID:J8LSZpTD0 >>242
まったく自分でプログラミングしてないなら実感沸かなくて当然なのだろうけど、その課題意味あるのかな。
それはともかく。
Cで書いたプログラムならどのOSでも 動く訳ではない。
Cで書かれたコードはOSぎ直接理解できるわけではない。そこでCのコードをOS上で実行できるコード(君の分類ではバイナリ)に変換する作業がいる。
その際、ターゲットとするCPUに合わせたコードに変換するから、違う種類のCPUの環境では動かない。
また、OSに関する機能は全部を自分の生成するプログラムに内包する訳ではなくて、OS側ですでに用意してあるプログラムを呼び出すだけだから、他のOSに自分のプログラムを持っていったら、呼び出す先のプログラムが存在しないので実行できないことになる。
まったく自分でプログラミングしてないなら実感沸かなくて当然なのだろうけど、その課題意味あるのかな。
それはともかく。
Cで書いたプログラムならどのOSでも 動く訳ではない。
Cで書かれたコードはOSぎ直接理解できるわけではない。そこでCのコードをOS上で実行できるコード(君の分類ではバイナリ)に変換する作業がいる。
その際、ターゲットとするCPUに合わせたコードに変換するから、違う種類のCPUの環境では動かない。
また、OSに関する機能は全部を自分の生成するプログラムに内包する訳ではなくて、OS側ですでに用意してあるプログラムを呼び出すだけだから、他のOSに自分のプログラムを持っていったら、呼び出す先のプログラムが存在しないので実行できないことになる。
251デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/25(火) 23:58:21.66ID:Ig86RmNy0252デフォルトの名無しさん (ワッチョイ 22f9-xOzC)
2018/09/26(水) 00:02:36.99ID:HESLqYz40 >>251
前提の理解が間違っているというか、APIが何者かまったくわかっていないよね。
winAPIはwindowsが予め用意してくれている機能で、一般のプログラマがコンパイルするものではない。
自分のプログラムをコンパイルするときに、くっ付けて使わせてもらうもの。
前提の理解が間違っているというか、APIが何者かまったくわかっていないよね。
winAPIはwindowsが予め用意してくれている機能で、一般のプログラマがコンパイルするものではない。
自分のプログラムをコンパイルするときに、くっ付けて使わせてもらうもの。
253デフォルトの名無しさん (ワッチョイ 6175-yLbS)
2018/09/26(水) 00:03:04.81ID:h9A6ffHl0 WindowsAPIはAPIであってプログラミング言語ではないので言語的な高級度は定義できません。
254デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 00:05:27.24ID:I4Gvy1+q0 すいませんまったく理解できなくてすいません
低級言語っていうのは、できることは単純だが速度が速いという認識です。
バイナリになると一切無駄が無いので実質、最速の言語だということも知っています。
APIという高度な機能をもってC言語をコンパイルするというのがなぞすぎます。
すでに単純な命令を何故コンパイルという時間のかかる処理を施すのでしょうか?
低級言語っていうのは、できることは単純だが速度が速いという認識です。
バイナリになると一切無駄が無いので実質、最速の言語だということも知っています。
APIという高度な機能をもってC言語をコンパイルするというのがなぞすぎます。
すでに単純な命令を何故コンパイルという時間のかかる処理を施すのでしょうか?
255デフォルトの名無しさん (ワッチョイ f94f-yqSl)
2018/09/26(水) 00:06:52.76ID:HY3LojxY0256デフォルトの名無しさん (ワッチョイ c980-yqSl)
2018/09/26(水) 00:08:13.65ID:nZ7x0XR+0 まずいまどきアセンブラなんか手書きでなんか書かない
C言語をコンパイルするとアセンブルしてしてアセンブラをコンパイルする
すると実行モジュールができる(コレがチミがバイナリと読んでるものになる)
WinAPIやDirectX APIはOSが提供するアプリケーションインターフェースになる
それをさっき書いたC言語から利用することができる
で、C言語に限定されないが、そういった開発を
知恵遅れでもできる環境を提供するのがIDEとよばれるものだ
当然、viでコードやmakefileをシコシコ書いてコンパイルするのもありだが
今時いちいちそんなめんどいコトやってるヤツは希少種といっていい
とりあえず今ココではJavaはおいとく
C言語をコンパイルするとアセンブルしてしてアセンブラをコンパイルする
すると実行モジュールができる(コレがチミがバイナリと読んでるものになる)
WinAPIやDirectX APIはOSが提供するアプリケーションインターフェースになる
それをさっき書いたC言語から利用することができる
で、C言語に限定されないが、そういった開発を
知恵遅れでもできる環境を提供するのがIDEとよばれるものだ
当然、viでコードやmakefileをシコシコ書いてコンパイルするのもありだが
今時いちいちそんなめんどいコトやってるヤツは希少種といっていい
とりあえず今ココではJavaはおいとく
257デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 00:09:35.96ID:I4Gvy1+q0 なんか根本的な事を教えてくれて泣けてきます
wiki見ても端折ってばかりで理解できなかったんで嬉しいです
でもそれでも分かりません…
wiki見ても端折ってばかりで理解できなかったんで嬉しいです
でもそれでも分かりません…
258デフォルトの名無しさん (ワッチョイ 6175-yLbS)
2018/09/26(水) 00:09:53.01ID:h9A6ffHl0 >>254
すみません、APIをコンパイルではなくAPIをリンクの間違いでした。
すみません、APIをコンパイルではなくAPIをリンクの間違いでした。
259デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 00:11:25.00ID:I4Gvy1+q0 知恵遅れでもできる環境
僕が使ってるのはCygwinとVisualStudioですね
学校の課題はCygwin推奨ですが、何故かVisualStudioも入れられましたw
僕が使ってるのはCygwinとVisualStudioですね
学校の課題はCygwin推奨ですが、何故かVisualStudioも入れられましたw
260デフォルトの名無しさん (ブーイモ MM62-Nssn)
2018/09/26(水) 00:13:32.35ID:OuxizmKlM >>257
まず、windowsAPIはC言語等の関数として提供されてるのはわかる?
そんでその関数のソースコードは公開されていない。だから、自分が書いたソースコードだけをmacに持っていってもソースコードが足りないので動かない。
仮にソースコードを手に入れたとしても、内部でwindowsのカーネル(コアとなるソフト)だけが提供している機能を利用使って実装されているから、やはりmacに持ち込むことはできない。
まず、windowsAPIはC言語等の関数として提供されてるのはわかる?
そんでその関数のソースコードは公開されていない。だから、自分が書いたソースコードだけをmacに持っていってもソースコードが足りないので動かない。
仮にソースコードを手に入れたとしても、内部でwindowsのカーネル(コアとなるソフト)だけが提供している機能を利用使って実装されているから、やはりmacに持ち込むことはできない。
261デフォルトの名無しさん (ワッチョイ 22f9-xOzC)
2018/09/26(水) 00:14:11.60ID:HESLqYz40 >>259
余談だけど、半角カナにこだわりのある通称半角クンに知恵遅れとか言われても気にする必要ないぞ。彼にとってただの二人称代名詞だから。
余談だけど、半角カナにこだわりのある通称半角クンに知恵遅れとか言われても気にする必要ないぞ。彼にとってただの二人称代名詞だから。
262デフォルトの名無しさん (ワッチョイ 6561-YXup)
2018/09/26(水) 00:16:23.80ID:0JN26GcE0263デフォルトの名無しさん (ワッチョイ 6175-yLbS)
2018/09/26(水) 00:17:32.29ID:h9A6ffHl0 オレが書いたC言語のプログラムを機械語に変換すればようやくコンピュータで実行できるようになります。
APIは既に機械語に変換されているか、オレの書いたC言語と一緒に機械に変換されてからオレの機械語と結合して使われます。
APIは既に機械語に変換されているか、オレの書いたC言語と一緒に機械に変換されてからオレの機械語と結合して使われます。
264デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 00:17:40.67ID:I4Gvy1+q0265デフォルトの名無しさん (ワッチョイ c980-yqSl)
2018/09/26(水) 00:18:24.20ID:nZ7x0XR+0 で、javaはコンパイルするとバイトコードに変換される
で、そのできあがったバイトコードはJavaVM(コレがチミがバイナリと読んでるものになる)で動かすことができる
昔のpascalのpコードのパチモンと考えればいい
そっから、さらに進んでバイトコードをjitコンパイラでコンパイルするしくみもあったりする
それ使うと実行モジュール(コレがチミがバイナリと読んでるものになる)ができてしまったりもする
ただ、その実行モジュールはターゲットマシンでないと動かない
で、当然、javaもeclipseみたいなIDE使って開発できる
わかった?
で、そのできあがったバイトコードはJavaVM(コレがチミがバイナリと読んでるものになる)で動かすことができる
昔のpascalのpコードのパチモンと考えればいい
そっから、さらに進んでバイトコードをjitコンパイラでコンパイルするしくみもあったりする
それ使うと実行モジュール(コレがチミがバイナリと読んでるものになる)ができてしまったりもする
ただ、その実行モジュールはターゲットマシンでないと動かない
で、当然、javaもeclipseみたいなIDE使って開発できる
わかった?
266デフォルトの名無しさん (ワッチョイ 42d2-MW2F)
2018/09/26(水) 00:18:39.07ID:ZP32HEFJ0 >>254
低級・高級(Low-Level/High-Level)は
言語体系がハードウェア実装=CPUに近いか
人間語に近いかどうかの話で
性能とは一切関係がない
(という話は確実に教科書に書いてあるはず)
CPUはバイナリしか解釈しないから
どんな言語を使ってもコンパイル作業が要る
低級・高級(Low-Level/High-Level)は
言語体系がハードウェア実装=CPUに近いか
人間語に近いかどうかの話で
性能とは一切関係がない
(という話は確実に教科書に書いてあるはず)
CPUはバイナリしか解釈しないから
どんな言語を使ってもコンパイル作業が要る
267デフォルトの名無しさん (ブーイモ MM62-Nssn)
2018/09/26(水) 00:22:18.55ID:OuxizmKlM268デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 00:23:21.36ID:I4Gvy1+q0 >>266
C言語は言語の中では最速だというのは教科書に書いてましたよ
C言語は言語の中では最速だというのは教科書に書いてましたよ
269デフォルトの名無しさん (ワッチョイ 2e81-coYL)
2018/09/26(水) 00:24:33.00ID:T1RBGvug0 >>264
Cで書いたソースの多分先頭付近に並んでいると思う
#include で始まる行の部分だけでも公開してみて
WindowsAPIの為に入っている行を取り除けば
(このままではコンパイルエラーになるかも知れないが)
Wacに持っていく入り口にはたどり着ける
Cで書いたソースの多分先頭付近に並んでいると思う
#include で始まる行の部分だけでも公開してみて
WindowsAPIの為に入っている行を取り除けば
(このままではコンパイルエラーになるかも知れないが)
Wacに持っていく入り口にはたどり着ける
270デフォルトの名無しさん (ワッチョイ c980-yqSl)
2018/09/26(水) 00:26:15.28ID:nZ7x0XR+0 たとえばmacで
WinAPIと同じインターフェースもつ同じ機能のAPI(書くことができるかどうかは別ににして)を
Cで書くとmacでwindowが動く
時間があるならついでに
なんで、POSIXというもんがあるか調べてみるといい
WinAPIと同じインターフェースもつ同じ機能のAPI(書くことができるかどうかは別ににして)を
Cで書くとmacでwindowが動く
時間があるならついでに
なんで、POSIXというもんがあるか調べてみるといい
271デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 00:26:28.94ID:I4Gvy1+q0272デフォルトの名無しさん (ワッチョイ 2e81-coYL)
2018/09/26(水) 00:31:29.48ID:T1RBGvug0 >>271
ホントにそれだけなら、そのまま
Macに持って行けるんじゃないか?
あとはMac側でコンパイラが使えるかどうか、だな
VCでないと困る事ある?
MacでやるならXcodeと言うのを使った方が良いように思うが
ホントにそれだけなら、そのまま
Macに持って行けるんじゃないか?
あとはMac側でコンパイラが使えるかどうか、だな
VCでないと困る事ある?
MacでやるならXcodeと言うのを使った方が良いように思うが
273デフォルトの名無しさん (ブーイモ MM62-Nssn)
2018/09/26(水) 00:32:08.86ID:OuxizmKlM 最初にWindowsAPIなんて言い出したやつは出てこい!!
ドッカン ゴガギーン
_ ドッカン ☆
===( ) /
`∧∧_||___ ∧∧
( )||| |(Д`)
f ⌒~ || || \
| / ̄ | |/| / /
| | | ヘ/\|_/ /
| | ロ|ロ\/\(_ノ)
( (_ \ | | Y /
| ||\ ヽ| | ||
| || / / | | ||
| ||/ /_|___| ||
(_(_) (__)
ドッカン ゴガギーン
_ ドッカン ☆
===( ) /
`∧∧_||___ ∧∧
( )||| |(Д`)
f ⌒~ || || \
| / ̄ | |/| / /
| | | ヘ/\|_/ /
| | ロ|ロ\/\(_ノ)
( (_ \ | | Y /
| ||\ ヽ| | ||
| || / / | | ||
| ||/ /_|___| ||
(_(_) (__)
274デフォルトの名無しさん (ワッチョイ c980-yqSl)
2018/09/26(水) 00:32:38.48ID:nZ7x0XR+0 そういうコードだったら
macでコンパイルしなおせば
普通に動くハズ
macでコンパイルしなおせば
普通に動くハズ
275デフォルトの名無しさん (ワッチョイ 22f9-xOzC)
2018/09/26(水) 00:33:06.80ID:HESLqYz40 >>268
C言語が速いんじゃないんだよ。
C言語で書かれたソースをコンパイルして生成されたバイナリコードが速いんだよ。それはCPUが直接実行できる形式だから。
別に他の言語でも、コンパイルしてバイナリコードが生成できるものは、本質的にはCと同じ。
遅いのは、バイナリコードを生成せずに、その言語固有のコードを生成して、それを別のプログラムが解釈しながら実行するようなタイプの言語だよ。例えばJAVAのような。(実行時コンパイルとかはこの際おいておく)
C言語が速いんじゃないんだよ。
C言語で書かれたソースをコンパイルして生成されたバイナリコードが速いんだよ。それはCPUが直接実行できる形式だから。
別に他の言語でも、コンパイルしてバイナリコードが生成できるものは、本質的にはCと同じ。
遅いのは、バイナリコードを生成せずに、その言語固有のコードを生成して、それを別のプログラムが解釈しながら実行するようなタイプの言語だよ。例えばJAVAのような。(実行時コンパイルとかはこの際おいておく)
276デフォルトの名無しさん (ワッチョイ 6561-YXup)
2018/09/26(水) 00:33:58.19ID:0JN26GcE0 >>271
おまじないは一個要らへんで
$ cat test-printf.c
int main(void)
{
printf("Hello\n");
return 0;
}
$ gcc test-printf.c 2> /dev/null
$ ./a.out
Hello
おまじないは一個要らへんで
$ cat test-printf.c
int main(void)
{
printf("Hello\n");
return 0;
}
$ gcc test-printf.c 2> /dev/null
$ ./a.out
Hello
277デフォルトの名無しさん (ワッチョイ 42d2-MW2F)
2018/09/26(水) 00:34:42.00ID:ZP32HEFJ0278デフォルトの名無しさん (アウアウカー Sae9-s2i8)
2018/09/26(水) 00:37:18.40ID:3GYry5Z9a OSによって動くコード(アセンブリ)が違う
CでもC++とかで書いたコードをコンパイルする時にその対象のOSで動くように機械語に変換される
なので同じCやC++のコードでもコンパイルできれば動くプログラムが作成できる
しかし、標準ライブラリ以外はその対象OS用に用意されていない場合もあるのでそういうライブラリを使用した場合コンパイルが出来ない
CでもC++とかで書いたコードをコンパイルする時にその対象のOSで動くように機械語に変換される
なので同じCやC++のコードでもコンパイルできれば動くプログラムが作成できる
しかし、標準ライブラリ以外はその対象OS用に用意されていない場合もあるのでそういうライブラリを使用した場合コンパイルが出来ない
279デフォルトの名無しさん (ワイモマー MM62-Y32S)
2018/09/26(水) 00:37:56.89ID:tnf9UX1gM ちょっと教科書名教えてくれwww
280デフォルトの名無しさん (ワッチョイ 42d2-MW2F)
2018/09/26(水) 00:38:29.20ID:ZP32HEFJ0 てかレポート出すような講義で「おまじない」で済ますもんなのか最近は
最初の質問もexeをそのままMacに持っていって動きますか?だったのかも
最初の質問もexeをそのままMacに持っていって動きますか?だったのかも
281デフォルトの名無しさん (ワッチョイ c980-yqSl)
2018/09/26(水) 00:43:17.15ID:nZ7x0XR+0 cygwin入ってると書いてあった
きっとgccもはいってるハズ
手動でコンパイルすればすぐに実行モジュールができるハズ
きっとgccもはいってるハズ
手動でコンパイルすればすぐに実行モジュールができるハズ
282デフォルトの名無しさん (ワッチョイ 469f-coYL)
2018/09/26(水) 00:45:01.24ID:9UO6BO9+0 >>231
標準入力やファイルからテキストのデータを読んで計算してから標準出力またはファイルに出力するような
ほとんど計算しかしないようなやつなら何一つ変えずにコンパイルできる可能性がある。
しかしGUIで入力を受け付けてGUIで結果表示みたいな作りの場合はその部分だけMacに合わせて変更する
必要があると思う。(もし互換性のあるライブラリがあるのであればそれをリンクすればなんとかなるが)。
標準入力やファイルからテキストのデータを読んで計算してから標準出力またはファイルに出力するような
ほとんど計算しかしないようなやつなら何一つ変えずにコンパイルできる可能性がある。
しかしGUIで入力を受け付けてGUIで結果表示みたいな作りの場合はその部分だけMacに合わせて変更する
必要があると思う。(もし互換性のあるライブラリがあるのであればそれをリンクすればなんとかなるが)。
283デフォルトの名無しさん (ワッチョイ 469f-coYL)
2018/09/26(水) 00:45:48.08ID:9UO6BO9+0 しまった。リロード忘れて書いてしまった。
284デフォルトの名無しさん (ワッチョイ 2e80-tQZR)
2018/09/26(水) 01:37:55.43ID:P+3GV8ah0 バイナリは、各CPU に固有のもの。
intel・AT&T では逆に書く
; for intel syntax
mov eax, 1
# for AT&T syntax
mov $1, %eax
これらを抽象化する層、仮想アセンブラのLLVM ができた
C → LLVM → 機械語
intel・AT&T では逆に書く
; for intel syntax
mov eax, 1
# for AT&T syntax
mov $1, %eax
これらを抽象化する層、仮想アセンブラのLLVM ができた
C → LLVM → 機械語
285デフォルトの名無しさん (ワッチョイ c964-vX2D)
2018/09/26(水) 02:25:42.64ID:p8TYnMT50 テキストファイルを#includeしたりするのっておもしろそうと思った。
#include "file.txt"
使い道がほとんど思いつかんけど。
正規化されたcsvファイルなら有用かもしれない。
#include "file.txt"
使い道がほとんど思いつかんけど。
正規化されたcsvファイルなら有用かもしれない。
286デフォルトの名無しさん (ワッチョイ 469f-coYL)
2018/09/26(水) 02:56:13.26ID:9UO6BO9+0 >>285
XPM や XBM フォーマットの画像ファイルは中身がテキストファイルでC言語になっているので、
プログラム中で使いたい時に #include で読むなんてことを昔やった事がある。
今でも画像を編集するソフトではそういうフォーマットに対応しているのがあるかも知れない。
あったら画像をファイルに保存後に中身をテキストエディタで見てみると良い。
XBM
http://sei.qee.jp/docs/graphics/xbm/index.html
https://en.wikipedia.org/wiki/X_BitMap
XPM
https://ja.wikipedia.org/wiki/XPM
XPM や XBM フォーマットの画像ファイルは中身がテキストファイルでC言語になっているので、
プログラム中で使いたい時に #include で読むなんてことを昔やった事がある。
今でも画像を編集するソフトではそういうフォーマットに対応しているのがあるかも知れない。
あったら画像をファイルに保存後に中身をテキストエディタで見てみると良い。
XBM
http://sei.qee.jp/docs/graphics/xbm/index.html
https://en.wikipedia.org/wiki/X_BitMap
XPM
https://ja.wikipedia.org/wiki/XPM
287デフォルトの名無しさん (ワイモマー MM62-Y32S)
2018/09/26(水) 02:57:00.82ID:tnf9UX1gM ただしコンパイルはできるかな?
288デフォルトの名無しさん (ワッチョイ c964-vX2D)
2018/09/26(水) 03:16:42.67ID:p8TYnMT50 XPMか。FVWMあたりのソースコード見れば実際に利用してるところがあるかもね。
なぜFVWMかと言うと ある程度小さくて読みやすいかなと思ったから。
なぜFVWMかと言うと ある程度小さくて読みやすいかなと思ったから。
289デフォルトの名無しさん (ワッチョイ c964-vX2D)
2018/09/26(水) 04:48:38.00ID:p8TYnMT50 ていうかさ なんで
#include "file.txt"
なんていうことをやろうかと思ったかというとさ,
よくアプリケーションのオプションで--helpみたいなオプションがあってそれを指定すると
標準出力にヘルプ情報を吐き出すじゃない。
で,普通それを実現するには,print_help()関数みたいなのを作って
その中で
puts("Usage: xxx [-dx] <file>...");
↑こういうのをずらずら書きならべると思うんだよ。
http://git.savannah.gnu.org/cgit/hello.git/tree/src/hello.c#n127←こんな風に。
で,そのヘルプファイルを外部ファイルにできないかな〜と思ってさ。
print_help() {
puts("
#include "help.txt"
");
return 0
}
こういう感じで。もちろんこれはコンパイルエラーになるけど。
#include "file.txt"
なんていうことをやろうかと思ったかというとさ,
よくアプリケーションのオプションで--helpみたいなオプションがあってそれを指定すると
標準出力にヘルプ情報を吐き出すじゃない。
で,普通それを実現するには,print_help()関数みたいなのを作って
その中で
puts("Usage: xxx [-dx] <file>...");
↑こういうのをずらずら書きならべると思うんだよ。
http://git.savannah.gnu.org/cgit/hello.git/tree/src/hello.c#n127←こんな風に。
で,そのヘルプファイルを外部ファイルにできないかな〜と思ってさ。
print_help() {
puts("
#include "help.txt"
");
return 0
}
こういう感じで。もちろんこれはコンパイルエラーになるけど。
290デフォルトの名無しさん (ワッチョイ cde3-tHrl)
2018/09/26(水) 06:52:38.46ID:ME0063O80 普通にfopen(),fgets()しろよ
291デフォルトの名無しさん (ワッチョイ 2ee8-IBuP)
2018/09/26(水) 07:02:15.89ID:KRhEkOMN0 ,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;;
{;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; #include "file.txt"
ヾ;;;ハ ノ .::!lリ;;r゙
`Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が
,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f. 俺にもありました
~''戈ヽ `二´ r'´:::. `!
{;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; #include "file.txt"
ヾ;;;ハ ノ .::!lリ;;r゙
`Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が
,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f. 俺にもありました
~''戈ヽ `二´ r'´:::. `!
292デフォルトの名無しさん (ワッチョイ 2d48-coYL)
2018/09/26(水) 07:12:11.89ID:Ozpnqin20 argv[0]を使わずにusage表示するやつ嫌い
293デフォルトの名無しさん (ワッチョイ 06d5-KkRk)
2018/09/26(水) 07:27:14.31ID:3KpC5Lnu0 >>290
実行ファイル内に組み込みたいんじゃないの
実行ファイル内に組み込みたいんじゃないの
294デフォルトの名無しさん (ワッチョイ 01f2-coYL)
2018/09/26(水) 07:40:06.18ID:slacS0cU0 includeするファイルの拡張子が.hか.txtなんて関係ないよな。
中身がCのコードとして解釈できるかどうかだけで。
中身がCのコードとして解釈できるかどうかだけで。
295デフォルトの名無しさん (ワッチョイ be23-coYL)
2018/09/26(水) 09:03:42.94ID:X1sPOZNr0296デフォルトの名無しさん (ワッチョイ 06d5-KkRk)
2018/09/26(水) 09:06:37.66ID:3KpC5Lnu0 独学で始めたての頃はリンカを知らなかったから、.c も全部 include してまとめてコンパイルしてたw
297デフォルトの名無しさん (アウアウカー Sae9-rLjT)
2018/09/26(水) 09:48:26.11ID:QtvShas/a >>292
かといって argv[0] って必ずプログラムファイルへのフルパスの文字列になってる保証はないよな?
UNIX系OSだとexecに渡す引数は実行するプログラムへのパスとargvの配列は別に指定できるしシェルは自身がログインシェルとして起動されたかどうかをargv[0]利用して判別してるし。
かといって argv[0] って必ずプログラムファイルへのフルパスの文字列になってる保証はないよな?
UNIX系OSだとexecに渡す引数は実行するプログラムへのパスとargvの配列は別に指定できるしシェルは自身がログインシェルとして起動されたかどうかをargv[0]利用して判別してるし。
298デフォルトの名無しさん (ブーイモ MMed-Bf5X)
2018/09/26(水) 09:54:31.75ID:+QPOg/oyM 組み込みでreal型を使うメリットってなんでしょうか?
floatやdouble型との違いを教えて頂けないでしょうか?
floatやdouble型との違いを教えて頂けないでしょうか?
299デフォルトの名無しさん (アウアウエー Sa4a-KpFT)
2018/09/26(水) 09:58:20.00ID:wpdgBSuMa 「パス」は正しくないでしょ
ユーザがシェルに入力した文字列が入るわけで
ユーザがシェルに入力した文字列が入るわけで
300デフォルトの名無しさん (アウアウエー Sa4a-KpFT)
2018/09/26(水) 10:04:04.84ID:wpdgBSuMa real型ってなんだ?
D?
D?
301デフォルトの名無しさん (ワッチョイ 2d48-coYL)
2018/09/26(水) 10:17:13.10ID:Ozpnqin20302デフォルトの名無しさん (ワイモマー MM62-Y32S)
2018/09/26(水) 13:07:42.63ID:tnf9UX1gM 好きか嫌いかより規格で語れよ!!
303デフォルトの名無しさん (フリッテル MMd6-l/4I)
2018/09/26(水) 13:15:13.67ID:GcxNqKYyM で?
304デフォルトの名無しさん (アウアウカー Sae9-rLjT)
2018/09/26(水) 17:10:26.81ID:dsR47lxwa >>301
argv[0] が "-" だったらどうするよ。
argv[0] が "-" だったらどうするよ。
305デフォルトの名無しさん (ワッチョイ c964-vX2D)
2018/09/26(水) 17:10:59.41ID:p8TYnMT50 まあやっぱり#include "file.txt"なんて常人は考えねーよなw
いろいろすまんかった。
いろいろすまんかった。
306デフォルトの名無しさん (ワッチョイ 2e81-coYL)
2018/09/26(水) 17:23:34.23ID:T1RBGvug0307デフォルトの名無しさん (ワッチョイ c1ea-CZft)
2018/09/26(水) 17:27:31.74ID:lDpRvfaq0 ビットマップを本体のコードに埋め込むのに
char data[] = {
#include "bitdata.inl"
};
とかやった。 bitdata.inl は別のソフトで生成
char data[] = {
#include "bitdata.inl"
};
とかやった。 bitdata.inl は別のソフトで生成
308デフォルトの名無しさん (バッミングク MMf5-vwf2)
2018/09/26(水) 17:33:26.10ID:lncCaYQKM >>307
disるつもりはないし状況も分からんのだけど、バイナリデータをコードに埋め込んでコンパイルかけるのは筋が悪いような?
disるつもりはないし状況も分からんのだけど、バイナリデータをコードに埋め込んでコンパイルかけるのは筋が悪いような?
309デフォルトの名無しさん (アウアウカー Sae9-rLjT)
2018/09/26(水) 17:35:54.43ID:dsR47lxwa XPMやXBMみたいなテキストなんだろ
310デフォルトの名無しさん (オイコラミネオ MMc9-KkRk)
2018/09/26(水) 17:36:31.54ID:cOtTFh6NM >>305
file.txt を C の文字列にした file.c なり file.h なりを作る簡単なスクリプトなり書いて、make ファイルでそれが動いて取り込まれるようにすりゃいいんじゃね。
usage:
-h help
-u unko
みたいなテキストを
#define USAGE "¥
usage:¥n¥
-h help¥n¥
-u unko ¥n¥
"
みたいな define か何かにすればいい。
file.txt を C の文字列にした file.c なり file.h なりを作る簡単なスクリプトなり書いて、make ファイルでそれが動いて取り込まれるようにすりゃいいんじゃね。
usage:
-h help
-u unko
みたいなテキストを
#define USAGE "¥
usage:¥n¥
-h help¥n¥
-u unko ¥n¥
"
みたいな define か何かにすればいい。
311デフォルトの名無しさん (ワッチョイ 2e81-coYL)
2018/09/26(水) 17:37:28.54ID:T1RBGvug0 大量のテーブルデータをマクロ型式で記述して
includeの直前でマクロを望む内容で定義すると便利
includeの直前でマクロを望む内容で定義すると便利
312デフォルトの名無しさん (ワッチョイ c1ea-CZft)
2018/09/26(水) 17:40:44.37ID:lDpRvfaq0 >>308
(Windowsの話)
ライブラリを作ってるときに、そこで使いたかったんだが(ImageList)
リソースというわけにもいかず、ファイルを読み込むのもライブラリ化の意図からずれるし で
埋め込んだのよ
簡単に肥大化するから筋が悪いのは半分承知
(Windowsの話)
ライブラリを作ってるときに、そこで使いたかったんだが(ImageList)
リソースというわけにもいかず、ファイルを読み込むのもライブラリ化の意図からずれるし で
埋め込んだのよ
簡単に肥大化するから筋が悪いのは半分承知
313デフォルトの名無しさん (ワッチョイ c1ea-CZft)
2018/09/26(水) 17:41:52.02ID:lDpRvfaq0 ああ 件のファイルは 0x○○, 0x○○, … なテキストのファイルです
314デフォルトの名無しさん (バッミングク MMf5-vwf2)
2018/09/26(水) 17:50:39.66ID:lncCaYQKM315デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 20:19:36.31ID:I4Gvy1+q0 WindowsAPIを機械語にするソフトを機械語にするソフトを機械語にするソフトを…
って考えたらまた頭が混乱してしまいました…
って考えたらまた頭が混乱してしまいました…
316デフォルトの名無しさん (アウアウエー Sa4a-KpFT)
2018/09/26(水) 20:25:14.53ID:07am72nua APIとはインターフェースである。
見えるのは表面だけで中身なんてどうなってるかわからない。
見えるのは表面だけで中身なんてどうなってるかわからない。
317デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 20:29:26.48ID:I4Gvy1+q0 CのコンパイラはWinAPIでしかかけないってことですか?
318デフォルトの名無しさん (ワッチョイ 61b3-CZft)
2018/09/26(水) 20:41:32.38ID:zSos1f990 Advanced windows買って読め じゃ乱暴か…
319デフォルトの名無しさん (アウアウカー Sae9-rLjT)
2018/09/26(水) 20:43:53.50ID:MrbR9bENa >>315
まずはWindowsAPIとは何なのかを調べろ。話はそれからだ。
まずはWindowsAPIとは何なのかを調べろ。話はそれからだ。
320デフォルトの名無しさん (ワッチョイ c964-vX2D)
2018/09/26(水) 20:45:37.17ID:p8TYnMT50 >>310
にゃるほど。
まあ それでもいいんだけど,結局変換の手間があるんだよね。
しかし一度でも.hか.cファイルを作ったらあとはそれを#includeすれば
複数のファイルに使えるってのは有用かもしれん。
Usageでは↑複数には適用できないけど,ライセンスとか。
にゃるほど。
まあ それでもいいんだけど,結局変換の手間があるんだよね。
しかし一度でも.hか.cファイルを作ったらあとはそれを#includeすれば
複数のファイルに使えるってのは有用かもしれん。
Usageでは↑複数には適用できないけど,ライセンスとか。
321デフォルトの名無しさん (アウアウエー Sa4a-KpFT)
2018/09/26(水) 21:08:33.17ID:07am72nua Cのコンパイラがpythonで書かれていようと俺は一向に構わんがインターフェースでどうやって書くのかは知らない
322デフォルトの名無しさん (ワッチョイ 6175-yLbS)
2018/09/26(水) 21:29:52.27ID:h9A6ffHl0 >>315
最初のコンパイラは人間が手入力でバイナリを書いた
最初のコンパイラは人間が手入力でバイナリを書いた
323デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 21:40:12.24ID:I4Gvy1+q0324デフォルトの名無しさん (ワッチョイ 2e81-coYL)
2018/09/26(水) 21:45:31.26ID:T1RBGvug0325デフォルトの名無しさん (ワッチョイ 19b3-vwf2)
2018/09/26(水) 21:48:20.48ID:Jt0rVGX10 いい加減、釣りだと気づけよw
てかみんな気付いた上で相手してるのか。
てかみんな気付いた上で相手してるのか。
326デフォルトの名無しさん (ワッチョイ 6175-yLbS)
2018/09/26(水) 21:49:37.93ID:h9A6ffHl0 >>323
Winapiでコンパイルじゃなくてwinapiとリンクと間違いだったって言ったやん
Winapiでコンパイルじゃなくてwinapiとリンクと間違いだったって言ったやん
327デフォルトの名無しさん (ドコグロ MMf5-JQ9C)
2018/09/26(水) 22:07:50.72ID:MrhohV/JM328デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 22:09:29.37ID:I4Gvy1+q0 コンパイラはWindowsAPIの実装を知ってる人じゃないと作れないってことですか?
よくコンパイラ入門なんて本あるけど作れるんでしょうか?
よくコンパイラ入門なんて本あるけど作れるんでしょうか?
329デフォルトの名無しさん (ワッチョイ 2e81-coYL)
2018/09/26(水) 22:18:36.87ID:T1RBGvug0 WindowsAPIは直接コンパイラとは関係ない
330デフォルトの名無しさん (ワッチョイ 2d48-coYL)
2018/09/26(水) 22:22:27.92ID:Ozpnqin20331デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 22:33:54.33ID:I4Gvy1+q0 WinAPIはインターフェースだけを提供していて実装は分からない
つまりコンパイラを考える人はMicrosoftの開発者だけってことですか?
それだとコンパイラ入門ってどういうことなんでしょうか?
つまりコンパイラを考える人はMicrosoftの開発者だけってことですか?
それだとコンパイラ入門ってどういうことなんでしょうか?
332デフォルトの名無しさん (アウアウエー Sa4a-KpFT)
2018/09/26(水) 22:40:30.36ID:07am72nua 1950年代にもうそれなりのアセンブリあるんだからすごいよね。
みんな頭いいんだな。
みんな頭いいんだな。
333デフォルトの名無しさん (ワッチョイ 2e81-coYL)
2018/09/26(水) 22:41:00.36ID:T1RBGvug0334デフォルトの名無しさん (ワッチョイ f1e9-7de5)
2018/09/26(水) 22:44:12.95ID:I4Gvy1+q0 すいません
正直話すと
レポートってのは2年のとき落とした履修で
今は卒論でコンパイラ作りたいんです…
つまりダブルということになります…
正直話すと
レポートってのは2年のとき落とした履修で
今は卒論でコンパイラ作りたいんです…
つまりダブルということになります…
335デフォルトの名無しさん (オイコラミネオ MMc9-KkRk)
2018/09/26(水) 22:48:53.63ID:cOtTFh6NM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- たぬかなの“結婚隠し”に「弱者男性ビジネス」の声…本人が異例の対応「支払いの履歴持ってきてくれたら返金するから連絡してや」 [muffin★]
- 【物価高対策】「おこめ券を配布しません」大阪府交野の市長が明言「経費率が高い」「今高い米をムリして…」 [1ゲットロボ★]
- 舛添要一「日本は亡国への道をひた走り」「相対的国力は中国が増大し日本が低下している」 [冬月記者★]
- 【地方】「もうヤメとけ、また移住者様が帰っちゃうぞ」田舎の「いじめ体質」★3 [七波羅探題★]
- 【サッカー】2035年アジア杯、日韓での共催模索の動きに 宮本恒靖会長「チャンスがあれば手を挙げたい。共催も一つの形…」 [冬月記者★]
- 【石破政権】🥐パン屋の倒産、大幅減 インバウンド需要や「パン食」シフトで復活‼ [1ゲットロボ★]
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1812
- 【U-NEXT】プレミアリーグ総合 ★37
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1813
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap606
- 巨専】 ★3
- とらせん IP
- パンクをやるにはちと老いだがロックをやるには若すぎるみたいなアルバム
- 寝れなかったぜ☆
- TBS山本恵里伽アナ「今の日本社会は世界平和や反戦など当たり前のことを言えない空気になっている」これもう新しい戦前だろ高市 [931948549]
- かもしれない人生で安全な人生を送ろう
- 老害「いいからこの漫画読め!面白いから!」→本当に面白かった漫画 [339035499]
- ワクチン打っちゃった正直な理由WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
