質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

6回答

6575閲覧

C言語で、開発者が複数いる場合の変数名などの被り対策

fdaskjlfda

総合スコア40

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

1クリップ

投稿2018/03/12 07:08

編集2018/03/12 07:37

やりたいこと

題名の通り、C言語で、開発者が二人いて、また短期間(数時間)で一気にそれぞれソースコードを書き上げ、それぞれのソースコードを一つのソースコードに組み込みます。その際、変数名に限らず関数名などもかぶる可能背があるので、C++の名前空間と似たような働きをさせることができないかを知りたいです。

変数名の最後に1,2をつけるということも考えたのですが、できれば最後の手段にしたいです
変数名の最後に数字を使う関数はそもそもあるからです。
できるだけたくさんのアイデアがほしいです

それぞれのソースコードの関係

こんな感じで、二人のソースコードをぶち込みます。

c

1#include<省略> 2 3 4//一人目の使う変数・関数を宣言&定義 5int Person1sRoutine() { 6} 7void Person1() { 8//一人目のソースコード 9} 10 11//二人目の使う変数・関数を宣言・定義 12int Person2sRoutine() { 13} 14void Person2() { 15//二人目のソースコード 16} 17 18int main() { 19 while() { 20 Person1(); 21 Person2(); 22 } 23} 24

制限

C言語のみ
ソースコードの分割は不可能
プログラムを組みながらの相談は遠慮したい

追記

課題が発表され、一定時間(数時間)内にソースコードを完成させないといけないという競技に参加しています。
その競技の提出方式が上のようになっています。
ソースコードを分ける理由は、自分たちが提出するソースコードすら他のmain関数から呼び出されたものの一つで、専用のコンパイラが必要となっていて、そのコンパイラが複数ファイルコンパイルに対応していないからです。
当方はまだ学生で、コンパイラを修正するor修正依頼する(実際にはしたけど改善されない)といったことはできません。
また、それらの理由もあり、プロのプログラマーのようにすぐにソースコードを書けるわけではないので、できるだけしゃべる時間は少なくしたいです。
時間が少ないので、ぶつかったときに名前を変更するのはできるだけ避けたい(そもそもぶつからないようにしたい)。
というのが現在の状況です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

  • gitなどバージョン管理ツールを導入する
  • 相談できるチーム作りをする
  • ソース分割できるチーム作りをする

といった感じでしょうか。割と真面目にチームの初期条件がおかしい。

投稿2018/03/12 07:22

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fdaskjlfda

2018/03/12 07:39

gitを導入済みですが、相方がいくら言ってもUPしてくれないんです... 相談できないというのは誤解を招きましたが、時間制限があるのでお喋りをする時間を極力減らしたいのです ソース分割はコンパイラの事情で無理です
kazto

2018/03/12 07:44

ご事情お察しします。 本件は間違いなく、技術レベルで解決すべきではなく、チームマネジメントのレベルで解決すべき案件です。 共同開発者がルーズであるなら、上司、ないしは顧客からそれを行うよう働きかけるべきです。 2lu3様に権限が無いなら、上司、ないしは顧客に働きかける。仕事をうまく回すコツです。
fdaskjlfda

2018/03/12 08:04

アドバイスありがとうございます 活用してみることにします
guest

0

C言語でかぶって問題になる部分があるとすれば、通常は「関数名」のみのはずです。
なぜならスコープの関係で、通常の変数は関数内に限定されるから、ソースファイル全域でかぶって問題になるような変数はない、はずだからです。
※グローバル変数はむろん別ですが

そもそもなぜソースファイルを一つにまとめるのでしょう?
それぞれが別のソースファイルおよびヘッダファイルを作成し、メインのソースではヘッダインクルードとビルド時にオブジェクトをリンクするようにするのが普通です。

投稿2018/03/12 07:15

編集2018/03/12 07:16
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fdaskjlfda

2018/03/12 07:18

回答有り難うございます いろいろと事情がありまして、あの形にしかすることができないのです 基本的に値を引き継ぎたいので、静的ローカル変数を使おうと思います また、関数名がかぶる対策はどのようにすればよいと思いますか?
maisumakun

2018/03/12 07:23

その「事情」のほうを掘り下げれば、「ソースコードを分割する」というもっと合理的な手段をとれるかもしれません。
maisumakun

2018/03/12 07:43 編集

競技プログラミングでしたら、「何も考えずに、他の人とつなげる分以外の変数・関数は機械的に別名となるような識別子を振ってしまう」というのが合理的かと思います。 数字じゃなくて、通常のCプログラミングにまず出てこない「大文字」を末尾につける、などの方法で区別してもいいかもしれません。
fdaskjlfda

2018/03/12 08:07

確かに、大文字小文字で区別するのは良さそうです 本当にありがとうございます 命名規則を二人で別々のものにしてみることにします
guest

0

ベストアンサー

こんにちは。

通常のCコンパイラでは不可能です。

ほぼC言語の文法でソースを書ければよいのであれば、namespaceを使いC++コンパイラでコンパイルすることもありではないでしょうか?

それが無理なのでしたら、ぶつかったら対処するのも現実的な話と思います。命名規則としてグローバル空間に定義する識別子は6文字以上などと決めておけばそうそうぶつからないと思います。


【追記をみました】
競技プログラミングならば、プリフィックスを決めておけば十分では?
佐藤さんならsを頭に付ける。鈴木さんならzを頭に付けるなどです。
寿命が短いプログラムですから、メンテナンス性や見栄えを考慮する必要はないと思います。

投稿2018/03/12 07:34

編集2018/03/12 08:37
Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fdaskjlfda

2018/03/12 07:38

今の所、コンパイラを変更するのは難しそうです 6文字以上にしたら確かにぶつかりにくくなります ありがとうございます
guest

0

初期の話し合い時に実装すべき関数・グローバル変数の名前および機能名を決める

実装中に上記以外の関数・グローバル変数が必要になった場合は
関連する機能名_変数名/関数名とする。

どうしてもモジュール名が思いつかない場合は開発者名_変数名/関数名を使う。

投稿2018/03/12 09:04

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

前提条件に無茶があって、相手も協力してくれないなら、関数名/変数名に必ず作者(→あなた)を示す名前なり、ニックネームなりを付ければさすがに被ることはないと思います(ただし見栄えは著しく悪いですが)。

今回の課題のようなある意味書き捨てのプログラムであれば、それもやむなし、と割り切ってみてはどうでしょうか。

投稿2018/03/12 07:56

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fdaskjlfda

2018/03/12 08:03

確かにそうですね 見栄えが悪いので他の手段が見つからなかったときにそうしようと思います
guest

0

せいぜいモジュールの名前を決めておいて、その名前の略語3~4文字を必ず関数名/変数名につけるとか。

#そもそもの初期条件がおかしいのには同意

投稿2018/03/12 07:39

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fdaskjlfda

2018/03/12 08:04

回答ありがとうございます 見にくいので、最後の手段にします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問