新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

WindowsのEclipseはどう使うか?忘れてます

2022-01-30 09:09:56 | C、CPP

 上の図で、左側のペインCMulSrcProjは、複数のソースファイルがありますが、お互いは無関係です。なので、1個をコンパイル実行をしてほしい。ですが、どうすれば良いの?下の図はVSCodeですが、お互いが無関係に実行ファイルが作られています。そのようにしたいのです。

 その下のCPPTestProjectはsrcホルダが有って、その下にソースファイルがあります。そのようにしてソースファイルを作ると、お互いが関連性を持った状態になります。なので例えば、同じ関数名は使えません。1個の実行ファイルを作る時はそれで良いのですけど。

 

Ecslipseからでも、ターミナルは起動できました。

 VS2019だとソースファイルがある時のプロジェクトの作り方と、Eclipseでのソースファイルがある場合のプロジェクトの作り方が違うようです。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Studentクラス話題。VS Codeで分割コンパイル出来なかったので…。C++

2021-09-16 08:41:58 | C、CPP

 望洋先生の「CプログラマのためのC++入門」平成4年初版ですので、30年位前の本ですが、今も時々見てます。例では分割コンパイルに成ってるのですが、VS Codeでその設定ができなかったので、一つに纏めてコンパイル、実行しました。分からなかったのが、最後の画面でコメントに成ってますが、間違っているのもあるとは思いますが、全てではないと思います。正しいものもあると思ってますが、どれも実行ファルいるが、作られない。ビルドは通るが、それ以降でエラーが起きます。

これのエラーの原因が不明です。VS2019で分割コンパイルのファイル構成では上手く行ったんですが…。

違いがわからない男です。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

C言語で高階関数と言うかどうか?試してみました。

2021-09-09 08:43:24 | C、CPP

 確かに、cametan_42さんから教えてもらったように、C言語でもやってますね。只、昔は高階関数という言葉がなかった。のかもしれません。長澤さんの「Kotlinスタートブック」通称コップ本,Scalaの説明でも、「高階関数」という言葉はありました。

計算部分で、3回同じように書いてますが、ループで行けそうですね。

単純に1から10までの足し算、その倍の数の足し算、その逆数の足し算で、関数の引数として関数を使う、やってみました。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

C言語の関数型のポインタを試してみましたが…

2021-09-07 20:12:08 | C、CPP

 C言語とC++はポインタが最大のポイントですね。両刃の剣みたいなもんで、強力だが分かりづらい。ネットから探して、少しだけ変えて、Pythonの例と同じような感じにしてみました。関数の引数に代入できるか?はやって見てないし、ネットでも見てません。

 ちょっと残念だったのが、VS CodeのC,C++の環境だと、NASでのファイルをコンパイルして実行ファイルは出来るようですが、エラーが起きてデバッグも起動できません。ファイルが見当たらないとエラーが起きます。DドライブにコピーすればDドライブでは出来ます。

 今回手間取ったのが、for(i=0; i++; i<3)とやってしまて、なぜ出力しないか?悩んでました。

コメント (4)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

C++、ファイルを印刷するプログラムで遊んでました。

2021-06-23 12:46:45 | C、CPP

今まで、なんか実行に関係なさそうだと、デストラクタを呼んでませんでしたが、newでオブジェクトを確保した時は、deleteが必要そうです。確保したときとほぼ同じで開放も出来ます。newとdeleteが違うだけです。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

CとC++で遊んでました。

2021-06-19 22:44:29 | C、CPP

上はC++Builder入門のサンプルコード。監修に三田典玄(のりひろ)さん、勝手に師と仰いでます。

その師である、三田典玄さんの著書、アスキー出版局、実習C言語のサンプル。

上の2つを参考に、弄り回してみました。IDEがタダで使えて、パズルを解く感じで変えていくのは楽しいですよ。ハマると大変ですが。(*^^*)

実は今回もハマってました。三田さんのサンプルでは、ファイル名の入力の最後は、改行だけの入力ですが、cinでそれが出来なくて、"end"の入力に、勝手に変えましたあ。(^^)

明日WPブログにコードだけを載っけます

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

C++暫く悩んでました。約2週間。

2021-06-11 13:57:07 | C、CPP

上2枚はGalleria1で実行した画面。

 上2枚はGalleria2で実行した画面です。Visual Studio 2019再インストールしました。Galleria1と全く同じ症状でした。いくら画面を見てもエラーの原因は不明でした。言えることは、VS Code 2019のターミナルからg++(多分mingwのコンパイラ)を使ってコンパイルすると上手くいくのでした。なんかの原因でしょうが、strcpyも使えませんでした。strcpy_sを使えと、文句を言われます。でもそれでも最後には、スタックが壊れてるというメッセージが出ます。

 なんとかうまく行けそうですので、当面はVS2019のバージョンをアップしない方が良いかもしれません。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

C++でstructとclassの違いは?

2021-06-03 21:58:52 | C、CPP

結論は、ほぼ同じということらしいです。唯一違うのは、structで宣言すると、defaultがpublicで、classで宣言するとprivateとなることらしいです。普通はstructはC言語からの流れですので、メンバ関数は入れない人も多いようです。逆にメンバ関数を入れたい時はclassで宣言する。

structでレコードを定義してます。一応レコードをスペースでクリアしてます。

C++は文字列の代入が出来ないので、コピーしますが、コピーもいろんな条件があるので、一番面倒な(安全な)strncpy_sを使わせられます。日本語があるとこれまた面倒です。

こちらはclassを使ってます。レコードはnewで確保して、それはポインターの配列で指すようにします。これが一番格好いいようです。エラーにはなってませんが、deleteしておかないと、メモリーが開放されないようです。ローカルであれば、終了とともに開放されるようですが、この辺がよく分かりません。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

グーグルレンズでC言語のソースを作成できるか?

2021-05-23 08:21:43 | C、CPP

上はグーグルレンズで参考書の写真から文字を起こしたそのまま。

多少の変換ミスと見やすく編集したものが上。

当然ですが、見直しは必要です。キーボードを叩くよりは楽かもしれません。今のままだと、一行空きますので、これは直したいですね。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

VS CodeでCとC++うまく動かなくて悩んでました。

2021-05-21 19:12:40 | C、CPP

Cは動いてました。

CPPが何故か動かなくなりました。どう見ても正しいように思いますが。

 .vscodeホルダーを削除して、再度作ります。作ると言っても、一番左の部分の三角(実行)と虫のアイコンを実行するだけ、みたいなもんですが、コンパイラは適切に選ぶ必要はあるようですが。するとlaunch.jsonとtasks.jsonの2つだけ、作られるようになったようです。一番上はだいぶ前のものですがc_cpp_properties.jsonもあって、ファイルが3個あります。このせいだと思いますが、上から3番目のエラーが起きていました。プログラミングではよくありますが、更新すると動かなくなる、でした。

 ちょっとしたプログラミングだとVS Codeの方が使い勝手は良いですね。

もう一つ勘違いしていたことがあります。関数はローカル変数を返してはいけない、では無くて、ローカル変数のアドレスを返してはいけない、ですよね。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

VS2019とVS Codeで悩んでました。

2021-03-28 22:20:03 | C、CPP

 上はVS2019での画面。下はVS Codeでの画面です。上だと問題なく実行できますが、下だとエラーになります。コンパイラは違うのですが、下はmingwです。上はマイクロソフトのものでしょう。それにしても、原因不明です。VS Codeの場合は、複雑になります。c_cpp_properties.jsonやlaunch.jsonとtasks.jsonが関係してきますから。VS Codeだと実行ファイルが同じホルダに出来ますが、VS2019だとDebugホルダーの下に作られて、しかもプロジェクトで1個の実行ファイルだったと思います。

 JavaScriptと関係ないことです。ここで止めておきます。前は良かったと思っても、更新するとおかしくなることは、よくある。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

望洋先生の「秘伝C言語問答ポインタ編」No30 文字列定数配列の確保の仕方

2020-11-10 20:58:52 | C、CPP

上の図ではstatic char *name[8]となっているが、下の図ではstatic char name[8][10]となっているとこが違います。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

望洋先生の「秘伝C言語問答ポインタ編」No28 ローカル変数は返せるが…。

2020-10-30 08:38:09 | C、CPP

暫く遠ざかってましたが、全く忘れたわけではありません。ここ数日考えてました。

 上の図で、MakePlus1Numberではローカル変数ですよねint w;。return w;してます。その上のlanguage_strではstaticな変数にして、ポインタを返しています。この場合はstaticでないと、returnした途端、参照先が消えてしまう。エラーになりますが。(*^^*)

 CとかC++では文字列がプリミティブなint等と違って、charの延長?となっている。文字列を返すことが出来ない、と思います。C#なら出来ると思います。

 Language_strで作った、ローカルなstrを返したように見えますが、そもそもがobjで作ってあるので、良いのかも?分かったようで、わからない話です。(´°̥̥̥̥̥̥̥̥ω°̥̥̥̥̥̥̥̥`)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

望洋先生の「秘伝C言語問答ポインタ編」No27 三次元配列とポインタの関係性

2020-10-26 10:00:11 | C、CPP

 ネタ本では、sizeofの問題でした。でも、実際に使う場面では、ポインタの大きさとかは、あまり意識しなくて良いように思います。配列の大きさ程度は理解しておいたほうが、良いかも知れません。実行例では、結局intを指すポインタになるので、配列を1個進める場合はポインタを+1することになります。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

望洋先生の「秘伝C言語問答ポインタ編」No26 三次元配列とポインタの関係性

2020-10-23 10:34:20 | C、CPP

肝心の一部が切れてしまいましたが、VS 2019の例で写っているので、同じものです。

ネタ本の通りなんでしょうが、では実際に使う時は?で値を放り込んでみました。

最後の方、9980、9997、9998、9999がポインタを使ってるところと、配列形式で値を入れてみてます。

funcがネタ本の内容です。

ここから分からないところです。*を25個出力しているはずですが、VS Codeでは出てません?なぜ?なんでか?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする