Cのプログラミングにおいて、グループ内でコーディング規則を
決めようと思ってます。
で、いろいろWebを見てる中で「GNUコーディング規則」という
ものがあるのを知りました。
どんなことが書かれているか知りたく、「GNUコーディング規則」
というキーワードで只今検索中です。
キーワードとしては引っかかるのですが、まだ「GNUコーディング規則」
の内容についての記述があるWebが見つかりません。。。
どなたか「GNUコーディング規則」の内容が書かれたURLをご存知でしたら
教えてください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

とは GNU」に関するQ&A: GNUとは?

A 回答 (1件)

「規約」でさがせば出てきますが、これのことですか。



参考URL:http://www.sra.co.jp/wingnut/standards-j_toc.html
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
参考にさせて頂きます。

お礼日時:2002/02/21 10:37

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qステップ数について

私の知人が会社面接にて「ソフトウェア関係の仕事がしたいです」と
言ったところ,会社側の人に「ステップ数はどれぐらいのプログラムを
書いたことがあるのか」とたずねられ,回答に困ってしまったそうです.
彼はC言語しかやったことがないそうで,ステップ数と聞けば繰り返し
何回ループさせたか,ということがステップ数だと思っていたそうなん
ですが(っというか私もそうなんですが...),会社の人の言ってる
ステップ数とはどうやら違う感じがしたらしく,「ステップ数とはなん
ですか」と聞いたところ,それで話しは終わってしまったそうです.
後から調べてみたところ,fortran ではステップ数という言葉が出て来る
ようなのですが,C言語ではあまりステップ数ということばを使わない
ので,会社の人の発言の意味が良く分かりません.
誰かご存知の方がいましたら,教えて頂けないでしょうか.

Aベストアンサー

こんちゃっsohですっ。

ソフトウェア関係の会社面接で「ステップ数」を聞かれた場合
「ソースコードの行数」
の意味になるんですが、これ、コメントは含まないんですよね。
実コード部のみのステップを測るソフトとかどっかにあるんですけどいまどきこんなん計測するやついねーよって
わしもい~っつも思いますわ。

C言語だから使わないとじゃなく、いまどき使わないが一番正確ですかね(失笑
でもちょっと古めの会社とか営業の人はステップで計るくらいしか思いつかないみたいなんですよねぇ
むかぁしは1000ステップでいくらって歩合制も敷いてた事もあったんですよ
だから
while() {
}
ってかかずに
while()
{
}
ってかいてみたりとか。
関数も
int hoe(int a,int b,int c)
じゃなくて

int hoe(
int a,
int b,
int c)

とか
ばっかばかしいよね。

Qコーディング規則

私のいるグループ内において、コーディング規則みたいなものを
決めようと検討しています。
例えば、
・インデントは「Tab 4」にする
・コメントのフォーマットを決める
・関数名、変数名のネーミング規則を決める
など。

他人が見ても理解しやすいコード体系にし、レビューも効率的になり、
バグの検証時にも役に立つと考えています。
また、今後、開発担当者から別の人に移管するときにも役立つと考えます。
そこで、みなさんにお聞きしたいのは、以下のことです。

・どういう事項をルール化すると役立つか
・参考になるURL、書籍はありますか

識者の方、ご教授願います。

Aベストアンサー

ソフトウェアの開発をしていますが、
コーディング規則はだいたい発注元(大手)に決められてしまうのがほとんどですね。
なのでコーディング規則を決めても実際の仕事ではお客様に合わせる形になりますので、
自社では決めない事がほとんどです。
⇒NECの仕事ではコメントはこう、日立の仕事ではif文はこう、
 東芝の仕事ではインデントがこう…etc
 ⇒さらにグループが変われば規則も変わりますし。

Cで限ってもし決めるのであれば、
変数名、コメント、改行、タブ、スペース、括弧の位置…。
でしょうか?

参考としてはANSIの記述を理想標準とし、
それを各社コンパイラメーカのヘルプに合わせたものが一般的ですね。
⇒例えばMicrosoft製品であればMSDN風に。

Qステップ数と計算量?

ステップ数と計算量とは何でしょうか?
問題で、

int x = 0;
for(int c = 0; c < n; ++c)
a += c

との問題があり「これのステップ数と計算量をnについて求めよ。」との問題でした。
しかしステップ数と計算量というものがよくわかりません。
ステップ、つまり行数でいいのでしょうか?
計算量もO(オーダ)を使うどうのと一応知人から教わったのですが、
知人自体もよくわかっていないようで結局何なのだか・・・。

ステップ数と計算量というものについて教えてください。
あとできれば上記の問題についても・・・

Aベストアンサー

ややこしいことに処理を行う行数をステップ数と呼ぶ場合もあるのですが、
この場合のステップ数というのは何らかの処理を行った回数のことです。

あなたの場合では、

int x = 0;          /* 変数 x の確保&初期化 */
for(int c = 0; c < n; ++c) /* 変数 c の確保&初期化 */
// (1)
                /* c と n の比較 */
                /* (2)へ処理を移す(前期条件を満たした場合のみ) */
                /* c に 1 を加算 */
a += c            /* a に c を加算 */
                /* (1)へ処理を移す */
// (2)

という処理が行われます。人によっては「(*)へ処理を移す」を処理に含めない場合がありますし、「確保&初期化」を2つの処理に分けるという考え方もあります。
あとは n という値が与えられたとき全体で処理が何回行われるかを数えてやればステップ数が計算できます。

で、おおざっぱにいうと、こうやって求めたステップ数が n の増え方と比較してどういう割合で増えるかを計算量といいます。
このとき、増え方が一番きついものを代表として採用し、n に関係しない値は無視します。
複数のアルゴリズムの効率を比較する場合、そっちの方が正確なステップ数を比較するよりわかりやすいからです。

え、問題の答?
上の処理を実際の値でいくつか試してみて、どういう風に各処理が行われるか(ここは毎回通るなとかここは 1 回だけだなとか)を調べるだけです。頑張ってください。

ややこしいことに処理を行う行数をステップ数と呼ぶ場合もあるのですが、
この場合のステップ数というのは何らかの処理を行った回数のことです。

あなたの場合では、

int x = 0;          /* 変数 x の確保&初期化 */
for(int c = 0; c < n; ++c) /* 変数 c の確保&初期化 */
// (1)
                /* c と n の比較 */
                /* (2)へ処理を移す(前期条件を満たした場合のみ) */
                /* c に 1 を加算 */
a += c ...続きを読む

Q【VC++2005】ソースの書き方:コーディングを****.hのファイルに書いてもいいでしょうか?変数名の命名規則はありますか?

VC++2005の超超初心者です。
現在、VC++2005(Express Edition)でCLRでプロジェクトを
つくり、いろいろとコーディングしています。

今まで、参考書「作って覚えるVisual C++ 2005 Express Editon」
を利用して、半分泣きながらコーディングしていました。

その参考書では、コーディングを*****.cppでなく、
****.hのファイルにすべて書いているのですが、いいものでしょうか?
先輩が残していったVC++6.0のソースを見ると、cpp内に書いていますが
どちらがよろしいでしょうか?

また、他の参考書を見ると、変数名の先頭に「m」をつけていますが、
何か意味があるのでしょうか?
(変数名をつける時の作法ってありますか?)

せっかくなら、きれいなソースを書きたいと思うので、
詳しい方いましたら、ご教授頂きたく思います。

Aベストアンサー

幾つかの.cppで同じものを定義する必要があるもの→.hに定義を書く
1つの.cppで1回しか定義しないもの→.cppに書く

・幾つかの.cppで同じものを定義する必要があるものの例
#defineの定義
関数のプロトタイプ宣言
typedefの定義
structの定義
classの定義
など。

・1つの.cppで1回しか定義しないものの例
グローバル変数の実体の宣言
関数の実体の宣言
クラス変数の実体の宣言
構造体変数の実体の宣言
など。

例えば、t1.cpp、t2.cpp、t3.cppの3つのソースで
#define INPUT_BUF_MAX 256
の定義が欲しい場合は
-------t1.cpp-------
#define INPUT_BUF_MAX 256

-------t2.cpp-------
#define INPUT_BUF_MAX 256

-------t3.cpp-------
#define INPUT_BUF_MAX 256
と書いてはいけません。書くなら

-------t.h-------
#define INPUT_BUF_MAX 256

-------t1.cpp-------
#include "t.h"

-------t2.cpp-------
#include "t.h"

-------t3.cpp-------
#include "t.h"

と書きます。

もし「256を512にしよう」と思ったら「t.hの256を512に直して、再構築」で済みます。

もし、最初の書き方で、t3.cppだけ直し忘れると
-------t1.cpp-------
#define INPUT_BUF_MAX 512

-------t2.cpp-------
#define INPUT_BUF_MAX 512

-------t3.cpp-------
#define INPUT_BUF_MAX 256
になっていると「t3.cppだけ数字が違ったままになっていて、バグが出る」でしょう。

このように「共通の定義や宣言は、.hに書く」のです。

幾つかの.cppで同じものを定義する必要があるもの→.hに定義を書く
1つの.cppで1回しか定義しないもの→.cppに書く

・幾つかの.cppで同じものを定義する必要があるものの例
#defineの定義
関数のプロトタイプ宣言
typedefの定義
structの定義
classの定義
など。

・1つの.cppで1回しか定義しないものの例
グローバル変数の実体の宣言
関数の実体の宣言
クラス変数の実体の宣言
構造体変数の実体の宣言
など。

例えば、t1.cpp、t2.cpp、t3.cppの3つのソースで
#define INPUT_BUF_MAX 256
...続きを読む

Q「どれくらいの”ステップ数”が出来ますか?」に対する良い回答例は有りませんか?

面接の時、面接官から「どれくらいの”ステップ数”が出来ますか?」と聞かれる時があるのですが、何か良い回答例は有りませんか?
・ステップ数なんて、今まで数えた事がなく、「月当たり5000ステップ位」なんて適当な答えじゃおかしいし・・・
・「正確性には自信が有ります」なんて答えたら、質問と異なる回答だし・・・
ステップ数は生産性の根拠にならないのは、理解しているだけにうまく答えられません。
どなたか、良い「回答例」は有りませんか?

Aベストアンサー

No.3です。
>「面接官がステップ数を尋ねる意図を探りなさい」と理解してよろしいですか? (文章修正しました)
はい。
面接官に、質問文のとおりの質問がされているのであればどうとでも取れますので、まずは質問の意図をくみ取ることが重要だと思います。
それに、詳しく内容を聞くことで「実際の製造を理解している」とか「質問内容を正確に理解しようしている」ととられる(かもしれない)効果も期待できます。

No.5氏が書かれていますが、
>開発によっては、既存のプログラムのコピペで大概ができてしまったり、
>スーパークラスを作る時とかは通常より時間がかかったりするので、
>一概に何ステップなんて言われても「今の開発」では困ると思います。
というのもあります。
実際、見積もりで「ステップ数も出せ」という案件も結構経験があるのですが、大抵そのステップどおりにいったためしはありません。
どうしてかというと、製品要求仕様だけを提示され、概要設計も詳細設計も行わずにステップ数を出すのですから無茶ぶりにも限度があります。

Qwindowsで使える GNU make

お世話になっております。
Windowsでの開発とlinuxでの開発をやっております。
前にWindowsのnmake が非力なので linux での make と同じ機能で、cygwinのmake のような特定の環境でしかうごくのではない、make はありませんか? という質問をして、MinGW の make という答えをいただきました。その後、これは便利に使っているのですが、最近共同の作業が多く、他人にも使わせたいのですが、MSYS をインストールしてもらわないとうまく行かないようです。
MinGW の make は単独では msys-1.0.dll が無いと怒るし、msys-1.0.dll を持ってきても、何もしないで終了空いてしまいます。MSYS のインストールディレクトリにパスを通して make をそこから起動すれば問題のですが、MSYSをインストールしないで make を使えるようにする方法はありますか? また、make.exe 単独(または1,2個の.dll)をコピーしてパスの通っている所に置くだけで使える make は無いでしょうか?

お世話になっております。
Windowsでの開発とlinuxでの開発をやっております。
前にWindowsのnmake が非力なので linux での make と同じ機能で、cygwinのmake のような特定の環境でしかうごくのではない、make はありませんか? という質問をして、MinGW の make という答えをいただきました。その後、これは便利に使っているのですが、最近共同の作業が多く、他人にも使わせたいのですが、MSYS をインストールしてもらわないとうまく行かないようです。
MinGW の make は単独では msys-1.0.dll が無いと怒る...続きを読む

Aベストアンサー

GNUWin32というシリーズのものがあります。
多言語対応で iconvともうひとつDLLが必要になっていますが、
ソースからビルドすればiconvを使用しないものも作れるかもしれません。

Make for Windows
http://gnuwin32.sourceforge.net/packages/make.htm

Qステップ数??

ステップ数って何ですか?就職活動の面接の時にプログラミング能力をステップ数で聞かれることがよくありますが、そんな言葉知りません。誰かC言語でのステップ数について教えてください。

Aベストアンサー

ソースコードの行数のことですが、ANo.2の方のおっしゃるとおり、会社によって数え方が変わります。(コメント文を数えるか、宣言文を数えるかなど)
コメント文を含まない場合は、論理コード行数と言ったりします。

ソフトウェア工学の本では LOC (Line Of Code)と表記しているものもあります。一般的には千行単位で KLOC がよく使われているものと思います。

ちなみに、私が以前一人で30KLOC程度のプログラムを書いて(一応それなりには動いたのですが)保守し切れなくなり、一人では10KLOCが管理限界かなと感じました。

Q【C#】textboxに入力されたキーワードを使った処理

【C#】textboxに入力されたキーワードを使った処理

C#初心者です。
以下の二つを知りたいので、分かる方いらっしゃいましたらサンプルソースなどで教えていただけると幸いです。

(1)textboxに文字が入力されているか、されていないかを判断する処理。
(2)もし入力されていたら、その文字を文字列KEYWORDに代入する処理。

宜しくお願いいたします。

Aベストアンサー

KEYWORDの実態がわからないので
とりあえず
string KEYWORD;
という文字列変数だということにしておく

if (!String.IsNullOrEmpty(textBox1.Text)) { // (1)
KEYWORD = textBox1.Text; // (2)
}

Q「開発ステップ数」とは?

ソフトウエアの開発業務に携わっている人なら、常識なのかもしれませんが、「開発ステップ数」の意味するところが分かりません。

おそらく、このステップ数に比例して、開発する労力がかかり、開発費も高くなるのだと想像しますが。

だれか教えていただけないでしょうか?

Aベストアンサー

大昔、コンピュータのプログラムをパンチカードに打っていた時代がありました。

パンチカードは、電車のキップ(自動改札のほうね)と同じくらいの厚さで、サイズはハガキよりちょっと小さ目、1行分を1枚にカードパンチャでコード化された穴をあけるのです。
1000行のプログラムなら1000枚、1万行なら1万枚を、コンピュータ様がおられる空調の効いたお部屋の前に持って行き、お供えするのです。しばらくすると、コンピュータ様のお告げ(答えの計算結果)が、横のラインプリンタから、うちだされてきたものです。

カード1枚を1ステップと数えていました。
1ステップということは、カード購入費、カードパンチャや、読み取り機の設備減価償却・リース費、コンピュータCPUの使用料金など、お金に密接に関係していました。
そのように、1枚1枚が貴重なので、きれいな飾りのコメントを入れたり、レイアウトを良くするために空行をいれるような贅沢者には、バチが当たったものです。

これが、「ステップ数とプログラム規模が比例する」ということの起こりだと思います。

ご明察どおり、
>このステップ数に比例して、開発する労力がかかり、開発費も高くなる
わけですが、
それもつい20年くらい前までで、最近では、ハードウェアの低価格化、高速化、大容量化により
高級な命令を持つ言語(すごい計算を1行でやってくれるような言語:C++など)が、流通していますので、
ステップ数と仕事の規模は、なんともいえない関係になっています。
ステップ数は、私のようなロートルオヤジの昔の自慢話にもならないくらい意味を無くしてきました。

ただし、「10万ステップのプログラムと、1000ステップのプログラムでは、多いほうが規模が大きく開発費も高い」ですが、
「2万と3万では、なんとも言えない」、てな感じです。

また、企業の紹介などで、過去のプロジェクトを紹介するときなどには、やむなく使われている場合があります。
なぜなら、開発プログラムの規模をうまくあらわす表現方法が、他にないからです。
「とっても大きなプログラム」とか「ちょっとしたプログラム」っていっても、わかりませんから・・・・

大昔、コンピュータのプログラムをパンチカードに打っていた時代がありました。

パンチカードは、電車のキップ(自動改札のほうね)と同じくらいの厚さで、サイズはハガキよりちょっと小さ目、1行分を1枚にカードパンチャでコード化された穴をあけるのです。
1000行のプログラムなら1000枚、1万行なら1万枚を、コンピュータ様がおられる空調の効いたお部屋の前に持って行き、お供えするのです。しばらくすると、コンピュータ様のお告げ(答えの計算結果)が、横のラインプリンタから、うちだされ...続きを読む

Qc言語とgnu

gnuをc言語に通すプログラムを作っているのですが
教授に聞きにいっても、教えてくれずに本当に困っています

時計の針を動かすプログラムを作りたいのですが
時計の針が出てきません

for文の使い方と
最後のほうのpauseの使い方が間違っていると思うのですが
どこがどう間違ってるのか教えてくださいお願いします

プログラム

#include "stdafx.h" //この文は通常、不要。単純アプリやHello worldを選ぶと必要。
#include <stdio.h> // はずしても通る
#include <stdlib.h>
#include <math.h> //数学関数の呼び出しに使用する。

#define GNUPLOT_PATH "C:/FUJITA/gnuplot/bin/pgnuplot"

int main(int argc, char* argv[])
{ double theta,a,b,k,pi;
pi=3.14;
FILE *gp;

gp = _popen(GNUPLOT_PATH, "w");
if(gp == NULL){
fprintf(stderr, "Oops, I can't find %s.", GNUPLOT_PATH);
exit(EXIT_FAILURE);
}

fprintf(gp, "reset\n");
fprintf(gp, "set title Clock \n");
fprintf(gp, "set size square \n");
fprintf(gp, "set key off\n");
fprintf(gp, "unset border \n");
fprintf(gp, "unset xtics \n");
fprintf(gp, "unset ytics \n");
fprintf(gp, "set grid \n");
fprintf(gp, "set parametric \n");
fprintf(gp, "set xrange [-1:1] \n");
fprintf(gp, "set yrange [-1:1.2] \n");
fprintf(gp, "set grid \n");

for (k=0; k<10; k++){
theta=k;
fprintf(gp,"set a=0.5*pi-(theta*pi)/180.0");
fprintf(gp,"set b=0.5*pi-(theta*pi)/(180.0*12.0)");
fprintf(gp,"set arrow 1 from 0.0,0.0 to 0.4*cos(b),0.4*sin(b) front size 0.1,30 lt 5 lw 5");
fprintf(gp,"set arrow 2 from 0.0,0.0 to 0.8*cos(a),0.8*sin(a) front size 0.1,15 lt 5 lw 3");

}
fprintf(gp," set arrow 1 from 0.0,0.0 to 0.4*cos(b),0.4*sin(b) front size 0.1,30 lt 5 lw 5\n""0.4*cos(b),0.4*sin(b)");
fprintf(gp," set arrow 2 from 0.0,0.0 to 0.8*cos(b),0.8*sin(b) front size 0.1,15 lt 5 lw 3\n","0.8*cos(a),0.8*sin(a)");

fprintf(gp,"plot sin(t),cos(t)\n");
fprintf(gp,"pause 100 \n");



return (0);
}

gnuをc言語に通すプログラムを作っているのですが
教授に聞きにいっても、教えてくれずに本当に困っています

時計の針を動かすプログラムを作りたいのですが
時計の針が出てきません

for文の使い方と
最後のほうのpauseの使い方が間違っていると思うのですが
どこがどう間違ってるのか教えてくださいお願いします

プログラム

#include "stdafx.h" //この文は通常、不要。単純アプリやHello worldを選ぶと必要。
#include <stdio.h> // はずしても通る
#include <stdlib.h>
#include <math.h>...続きを読む

Aベストアンサー

C言語のプログラムの世界とC言語のプログラムが作り出すgnuplotのプログラムの世界を区別して捉えないと混乱の素です。(プログラムとプログラムが作り出すプログラムとを区別して考えるのはなかなか難しいので、ある程度経験をつませずに出した課題とすればかなりひどい)

つまり、短針と長針が出ないのは
> for文の使い方と
> 最後のほうのpauseの使い方が間違っていると思うのですが
という問題ではないです。
(for文の中のgnuplotに与える文に改行(\n)がないのはいただけませんが)
(for文の後のgnuplotに与える文も文頭にコマンドがついておらず、改行(\n)で終わらない変な文があるようですが)

fprintf(gp, "plot sin(t),cos(t)");はC言語で書かれたプログラムで、
この中にあるplot sin(t),cos(t)はgnuplotに与えるプログラムです。
gnuplotにはpopenで開かれたpipeを通じてプログラムが与えられます。

pi=3.14;やtheta=k;はC言語でpiやthetaにkを代入していますが、
これらの代入をgnuplotに与えるプログラムは知らないので、
fprintf(gp,"set a=0.5*pi-(theta*pi)/180.0");
が出力するコードset a=0.5*pi-(theta*pi)/180.0は
知らない変数が出てきたということでエラーでしょう。
そして、set arrow 2 from 0.0,0.0 to 0.8*cos(a),0.8*sin(a) front size 0.1,15 lt 5 lw 3はaへの代入が出来ていない時点で実行されないと思います。

正しくは、fprintf(gp, "set pi=%lf", pi);と書いてgnuplotの世界にC言語の世界のpiの値を教えてあげることでしょうか。(教えるべき値はpiのほかにもありますが)

あと、課題の内容がわからないのでなんとも言えませんが、
この部分を解決すれば短針と長針はとりあえず出ると思います。
デバッグするにはpopenではなく、gp=stdoutして標準出力に出力したものを
gnuplotにリダイレクトしてみたほうがわかりやすいかもしれませんが...

C言語のプログラムの世界とC言語のプログラムが作り出すgnuplotのプログラムの世界を区別して捉えないと混乱の素です。(プログラムとプログラムが作り出すプログラムとを区別して考えるのはなかなか難しいので、ある程度経験をつませずに出した課題とすればかなりひどい)

つまり、短針と長針が出ないのは
> for文の使い方と
> 最後のほうのpauseの使い方が間違っていると思うのですが
という問題ではないです。
(for文の中のgnuplotに与える文に改行(\n)がないのはいただけませんが)
(for文の後のgnuplot...続きを読む


人気Q&Aランキング