全くの初心者ですので間違ったこと言ってると思いますがご了承ください
c言語を学ぼうと思うのですが
環境構築がわかり辛いです
visualstudioでデスクトップアプリケーションとか選んでprintfのビルドとかしてると失敗します
cのファイルにすればいいとかmainの前にc++だと型を入れなきゃいけないとかatomというエディターでgcc(MinGC)だとかでそっちは動きました
それはそれでいいのですが
@なんというか純粋にc言語を勉強したいのと
@WINAPIはc++ではなくc言語で使えるのか
聞きたいです
苦しんで覚えるc言語というのもあるらしいですが
起動したらエラーみたいなやつがでます
それにあれだとcだけのやつなのだと思うのでWINAPIは使えないのでしょうか?
何かいい環境はないでしょうか
普通にやってる方は設定とか普通にやると思うんですけど
ファイルの設定やらバッチやら毎回設定するのって凄い無駄な事してる気がするのですが
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/18 15:25
回答6件
0
ベストアンサー
なんというかいろんなものが混ざり合ってしまっている、実にカオスだ。
- 「苦しんで覚えるC」はC言語の入門本。pure C。良書です(個人的な見解)
- Visual StudioはC/C++コンパイラやテキストエディタをすべてセットにしたIDEである
- Visual StudioのC/C++コンパイラである
cl.exe
はC++コンパイラとしては最近かなりマシになっているが、CコンパイラとしてはC99にすらまともに対応していない。C言語の勉強には不向き。 - gccはCコンパイラである
- mingwとはlinuxなどで標準的に使われているツール群でWindows向けのbinaryを吐くことができる環境。Windows上はもちろんLinux上でも動く(LinuxでクロスコンパイルしてWindowsで実行とかが一般的なユースケース)
- Win32APIとはWindowsのもつ機能を利用するためのAPI。もちろんCから利用できるし、Cから使えるということはたいていどんな言語でも(難易度の差こそあれ)使える。
- いろんなコンパイラを同時に利用したい場合はCMakeを利用するといいです
ありきたりなCMakeのプロジェクト作成 for C++ - Qiita
- mingw-gccを利用するときの環境構築は様々な方法が乱立していましたが、現在ではmsys2を利用するのが圧倒的に楽です。依存ライブラリなどのパッケージ管理はArch Linuxでおなじみ
pacman
が利用できます。 - ぶっちゃけC言語勉強したいならWindows上でやろうとするより、Ubuntu(18.04LTSよりは16.04LTSのほうが今はまだ安定している感じ)とかManjaro Linux(Arch Linux系でmsys2と同じくpacman使える)とかを入れて使うほうがストレスフリーで快適。
投稿2018/05/18 00:11
総合スコア5850
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/18 14:57
2018/05/19 09:44
2018/05/19 14:33
2018/05/19 14:35
2018/05/19 16:09
2018/05/20 01:42
2018/05/20 17:52
0
mainの前にc++だと型を入れなきゃいけない
エラー文の通り、厳密に規格化されたC++では関数の戻り値の型の省略はできません。
実験したところMSVC/gcc/clangのうち通るのはgccのみでした。
gccでも-pedantic-errors
オプションを指定する事によりエラーになります。
VCの場合、拡張子で判別するのでC言語を学習したい場合ファイル名を変更するのがよいでしょう。
WinAPIについて
WinAPI自体はCから呼び出す事を想定しています。
実際に呼び出せるかはコンパイラ次第ですがx86/x64のexeファイルを生成できるコンパイラならほぼ呼び出せます。
苦C環境について
起動時のエラーもですが
苦CIDEで利用しているTinyCCは古く日本語対応ができていません。
VScodeにTCC拡張入れた方がマシでしょう
WinAPIについては使えそうな雰囲気を感じますね。
ファイルの設定やらバッチやら毎回設定する
何を指しているかは分かりかねますが
教育者側から「MSVCはC/C++を教えているのか、VCの使い方を教えているのかわからん」との声を聞いた事があります。
個人的におすすめの学習環境は前述のVScode + TCCですね。
不満が出るほど学習が進んだならば、VScode + MSYS2ターミナル設定になります。
投稿2018/05/18 00:16
編集2018/05/18 00:17総合スコア15147
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/18 15:20
2018/05/18 17:14
2018/05/18 22:33 編集
2018/05/19 15:31
0
幾つかコメントしましたが、、、
結局は何のために Cを学びたいかという事になるのでは思います。
純粋なC言語っていったいなんでしょう。
今時、K&R と言っても骨董品と言われるでしょうが、元々はここからとも言われます。また、お仕事で使われる場合を考えると、指定された言語/環境があって、標準云々よりもそちらが優先。(バグで使っちゃいけない機能もあったり)
それと、Linuxについて、これから勉強したいという事があれば、別ですが、Windows + Visual Studio あたりでも十分と思います。(無償版もあるし)
ただ、その次を考えると難しい。
純粋な C と言った時に何ができるか? お絵かきなんてのは、外部ライブラリで、環境依存だったかと。(WINAPIは、Windows環境でのお絵かき用) Cのみでは、文字(数字)の入出力だけでしょうか? 将来を考えると、統合環境になれる事も必要かと思いますが、慣れるまで大変。
お手軽どころでは、Windowsのコマンドプロンプトから、CL コマンドでコンパイルし、実行するのが、簡単と思ったが、コマンドプロンプトの理解が必要。
また、WINAPIは、今、覚える事に価値があるのか、疑問もあります。(手間がかかる割には、使うところが無い)
と考えると、C言語が良い選択なのか疑問がありますが、どうでしようか?
Windows環境ならば、C#あたりが現実な選択肢ではないかと思います。WINAPIも現実的な選択肢とは思えません。あるいは、人気上昇中の Python ?
投稿2018/05/19 10:13
総合スコア6383
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/19 15:52
2018/05/20 01:47
2018/05/20 02:09
0
@なんというか純粋にc言語を勉強したいのと
@WINAPIはc++ではなくc言語で使えるのか
この2つは相反することです。
WINAPIは名前の通りWindowsのAPIなので、純粋なC言語とは異なります。
初心者とのことなので、まずWINAPIのことは忘れて、C言語の基本的なことから学習されてはいかがですか。
どっちみちC言語の基本的なことがわかっていないとWINAPIなんて使えないと思いますし。
なのでMinGWの環境で、適当なエディタでコードを書く→コマンドプロンプトからgccでコンパイル→実行ファイルを実行して確認、のようないわゆる普通のC言語開発で学習することをお勧めします。
最初からVisualStudioのような大きな開発環境で始めると、C言語以外のところで足を引っ張られる可能性がありますので。
ある程度C言語の基礎を身に着けることができたら、VisualStudioなりWINAPIなりにステップアップすればよいと思います。
投稿2018/05/18 00:07
総合スコア16998
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/18 14:44
2018/05/19 08:54
2018/05/19 09:39
2018/05/20 23:48
2018/05/21 12:28
2018/05/21 14:32
2018/05/21 23:36
0
純粋なC言語は、OS、コンパイラ、OS上のコマンドなどを設計するために用います。
環境設定はVisual Studio用の設定ファイルか、サンプルを変更して使っています。
環境設定とか、純粋なC言語とか、言葉に振り回されていませんか?
具体的に何がやりたいかをお書きいただくか、それに類似したサンプルがどこにあるかを探してから
質問いただくといいかもしれません。
投稿2018/05/17 22:15
総合スコア27
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。