警告:MISRA-Cでは昔continueを禁止していたが現在このルールは没になっている ■continue禁止で深いネスト(非推奨) 古いMISRA-Cルールはcontinueを禁止していたのでメイン処理がネストの深い… 続きを読む 【C言語】 continueをコーディング規約で禁止しないで下さい
警告:MISRA-Cでは昔continueを禁止していたが現在このルールは没になっている ■continue禁止で深いネスト(非推奨) 古いMISRA-Cルールはcontinueを禁止していたのでメイン処理がネストの深い… 続きを読む 【C言語】 continueをコーディング規約で禁止しないで下さい
私がソケットプログラミングと出合ったのは、2000年でした。それまでDOSのプログラミングしか知らなかった私にとって、マルチタスクOS上で、複数の相手と同時に通信を行うソケットというものは衝撃的でした。当時、ソケットプログラミングを1から学習しなければならない状況になってしまった時には、すでに仕事を受注した後で、納期も迫っている状態でした。そこで、急いで文献をあさったり、ネットで検索したりしたのですが、なかなか初めての人にわかりやすく説明された文献に出会うことができません。 それでも、なんとか手探り状態でソフトを作り上げ納品したのですが、ソケットプログラミングでは常識的である事、たとえば、0バイト受信後に必須のソケットの切断処理や、ソケットからデーターを受信するバイト数が必ずしも一定ではない事を知らずに作っていたため、ひどく叱られた事を思い出します。それでもなんとか、発注先の担当者様に叱ら
お世話になります、AEと申します。 次のような件に悩まされています。 ○画像のラベリング処理において、再帰呼び出しによって塗りつぶし処理を行っているのですが、再帰の回数が多くなると途中でメモリリークによるものと思われるエラーが発生し処理が中断してしまいます。 #ただし、物理メモリを全部使い果たした様子はありません。 ソースコードやエラーメッセージを添付できず、漠然とした質問で大変心苦しいのですが、一般論として、 ○Windows上で開発したプログラムにおいては、再帰の回数(あるいは再帰呼び出しのために確保されるメモリ量)は有限なのでしょうか?また有限であったとしてそれを拡張する設定があるのでしょうか? ということについてご意見などいただければと思います。 **** 無論、プログラム自体の不具合によってメモリリークを引き起こしているんじゃないの?とか、そもそもメモリが足りてないんじゃないの?
はじめに 先日ツイッターで見かけた呟き pic.twitter.com/33Yk02hu1U — TOMO (@tomozh) October 14, 2020 そういうこともあるのか的な反応もあるようなので具体例を挙げてみることにする。 例1 所謂FizzBuzz問題。 #include <stdio.h> void fizzbuzz(int n) { int next; int i = 1; do { printf(i % 15 ? i % 5 ? i % 3 ? "%d\n" : "Fizz\n" : "Buzz\n" : "FizzBuzz\n", i); if (i++ >= n) next = 0; } while (next); } int main(void) { printf((char[]){""}); // この位置にprintfが無いとなぜか動かない fizzbuz
Cコーディング・スタイル例 以前(2~4年前)に、社内向けにコーディング規約案を書いたことが あり、その残骸?があったのでコーディングスタイルの例として 出しておきます。 規約といってもラフなものですし、その当時の自分の スタイル/自衛手段を書き出し、これを叩き台にして他の人の要望 などを反映させたりしました。以下は、 社内事情や自分のスタイルに合わない個所をいくつか 削除しています(自分の習慣でない記述も残っていますが)。 単なる一般的な自衛手段だったり 完全に自分の好みのこともありますが、 一応、なぜ、そのようにするのか、を、書くようにしていたので、 何かの参考になるかもしれません。 あと、スタイルに関しては 『プログラミング作法』(書籍ですが)を みるのがいいでしょう。オンラインでは こちらなんか も結構いいです。 ■はじめに ■ ソース・ファイル ■ソース中の特殊文字コード ■動作
「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。 さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。 ソフテックだより(発行日順)のページへ ソフテックだより 技術レポート(技術分野別)のページへ ソフテックだより 現場の声(シーン別)のページへ Windowsプログラム(C/C++)の厄介な問題のひとつに、アプリケーションエラーがあります。 最近では.NET Framework上で動作するマネージドプログラム(※1)のプログラムが増えてきているため、アプリケーションエラーが発生する可能性は低いと思いますが、まだまだ現役のネイティブプログラム(※2)は多いため、避けては通れない問題です。 そんな中、先日、私にアプリケーションエラーの調査依頼があり、担当することになりました。しかし、数年振り
エラーを引き起こすコメント行 とあるC言語のプログラムを Windows 上の Visual Studio 2008 で編集・作成し、完成したソースコードを Linux マシンにコピーし gcc でコンパイルしてデータ処理を実行という流れで作業を行っていました。 その際に、ある全角文字を含むコメント行が存在するとエラーが生じるという現象に遭遇しました。 このエラーを再現するプログラムは以下のようなものです。 #include <stdio.h> int main(void) { int n = 10; // n の値により分岐可能 if(n > 5){ printf("Large\n"); }else{ printf("Small\n"); } return 0; } このソースコードは、Visual Studio上では何の問題もなくコンパイル、実行できます。 しかしながら、Linux の
1:風吹けば名無し@\(^o^)/ 2016/04/26(火) 23:57:46.84 ID:L37/gTWB0.net
4月27日 と 28日 のエントリーに、確率統計の再勉強中であることを書いた。高校時代から思っていたのだが、答えの正確性を担保するものがないことに、つらつら不満を感じた。問題集だったら巻末に答えが載っているが、現実に直面する問題にはそういうものはないから、間違えたら間違えっぱなしじゃないかということである。そして人間は必ず間違いを犯す存在なのだ。 のっけから話はズレるが、その点、複式簿記ってすごいですよ。貸借平均の原理というのに基づいて、間違いを検出するシステムが構築されている。あれも間違いなく人類の偉大な知的遺産の一つだと思っている。もっと勉強せねばと思いつつ果たしていない。 スポンサーリンク 話を戻して、高校時代に比べて今の自分は無駄に年を取ったわけでなく、ちっとは知識を蓄積しているはずだ。すぐに思いつくのは、簡単なプログラミングによってシミュレーションをすることだった。しかしマシンの
とあるC++コードがコンパイルエラーするんですが、原因がまったく分からなかったんですよ。「そんなバカな?!」という感じ。しばらくハマってしまいましたよ。 結局、C++でもCでも同じことが起きることが分かりました。次は、僕が遭遇したのと同じ現象が起きるC言語のソースコードです。 // -*- coding: sjis -*- // strange.c struct ThreeNums { int x; // 負の数も指定可能 int y; int z; }; int total(struct ThreeNums nums) { return nums.x + nums.y + nums.z; } コンパイルすると: $ type tdm-gcc tdm-gcc is aliased to `/c/Installed/TDM-GCC-64/bin/gcc.exe' $ tdm-gcc --ve
(前回までのあらすじ) Windowsアプリケーション(GUIプログラム)なのに、実行結果をコマンドプロンプトに表示しなければならなくなった。 Windowsアプリケーションでは、標準入出力が何処にも割り当てられていないので、 printf("Hello, World!"); としても何処にも表示されません。 “何処にも割り当てられていない”が表示されない原因ならば、プログラム上で何処かに割り当ててしまえば万事OKです。 標準入出力の設定は、freopen()関数で行えるのですが、Windowsアプリケーションの場合は、その前にAllocConsole APIを呼ばなければならないことになっているようです。 ::AllocConsole(); // コマンドプロンプトが表示される freopen("CON", "r", stdin); // 標準入力の割り当て freopen("CON",
東京・りんかい線は12月15日(火)、同人誌即売会「コミックマーケット89(C89)」の開催に合わせた記念一日乗車券を発売しました。券面のイラストは、コミックマーケット89のカタログ(冊子版)と同じデザイン。来場の記念にもなります。販売は2,000枚限定で、大人券のみ。価格は700円です。 ▽ http://www.twr.co.jp/info/2015/ticket_comicmarket89.html 記念一日乗車券は、りんかい線の全線(新木場~大崎間)を1日中乗り放題で利用できます。有効期間は、購入した日から2016年8月31日(水)まで。りんかい線各駅の有人改札口(大崎駅を除く)でのみ販売しています。自動券売機で販売している一日乗車券は購入した当日のみ有効で、デザインも異なります。 コミックマーケット89は、東京ビッグサイト(東京都江東区)で2015年12月29日(火)から12月3
In this guide, I will help you to setup an efficient working C/C++ environment. Despite looking long, the setup is short and easy (mostly copy/paste Emacs Lisp code into your init.el); most of the guide are explanations and demonstrations of many useful features. Following this guide, you should be able to browse the Linux kernel source tree inside Emacs effortlessly, such as jump to definition/re
下記は astyle 1.15.3 の astyle.html を適当に日本語化してみたものです。 Artistic Style 1.15.3 C , C++ , C# , Javaソースコード用 フリー で速くて小さい自動整形ツール by Tal Davidson, Israel (E-mail: davidsont@bigfoot.com) Artistic Style は C, C++, C#, Java のソースコードのインデントや整形を行える。 ソースコードをインデント付けするとき、プログラマはインデントに合わせて空白とタブ の両方を用いやすい。さらに、エディタによってはデフォルトでタブキーが押されると空白を挿入したり、また(例えばEmacsでは)行中のコードの手前に自動で空白を置いたりあるいは段付けに今までタブだけを使用したコードに空白を挿入したりして行を整えたりする。 ソース
| 局所変数とその有効範囲 | ブロックの入れ子による有効範囲の限定 | 大域変数とその有効範囲 | 関数の仮引数の有効範囲 | 演習問題 | 局所変数とその有効範囲 そもそもプログラミング言語で変数を使うためには, 値を格納する場所をメモリ上に確保し, その変数名でそこにアクセスできるようにしなければなりません. C言語では変数の定義でそれを行います. これについて説明するために, プログラミングAで出てきた階乗を計算するプログラムを 再びここで挙げてみましょう(ただし関数プロトタイプなどを追加してあります). #include <stdio.h> int factorial(int); int main(void) { int n, fac; printf("n="); scanf("%d", &n); fac=factorial(n); printf("factorial = %d\
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く