- 1 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 09:10:30 ]
- エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.39【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1182740506/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 413 名前:デフォルトの名無しさん [2007/07/26(木) 23:18:28 ]
- 412
CSVやテキストや独自バイナリでまず作っておけよ
- 414 名前:デフォルトの名無しさん [2007/07/26(木) 23:19:08 ]
- なぜエクセルにこだわるのかがわからない
動作が鈍くなるだろ
- 415 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:22:40 ]
- おかげで騒ぎまくったお
⊂⌒ヽ (⌒⊃ \ \ /⌒ヽ / / ⊂二二二( ^ω^)ニニ二⊃ \ \_∩_/ / ( (::)(::) ) ヽ_,*、_ノ ブーン /// ///
- 416 名前:155 mailto:sage [2007/07/26(木) 23:34:05 ]
- >>413-414
パーツのステータス管理(耐久度とか説明文)をExcelを使えば編集がしやすいかと思って実装しようとしています。 なるほど、エクセルから独自形式へのコンバートをこちらでしてしまえば、 ユーザは独自形式を読み込むだけなのでExcelが無いと動かないような症状にはなりませんね。
- 417 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:37:11 ]
- >>416
その「編集」をするのはユーザなのか、お前さんなのか、プログラムなのか、どれだ ユーザに編集させるんなら、Excelがインストールされているのが当然前提になる 自分なら、CSVなりTSVなりプログラムで扱いやすい形式でセーブしてやれば いいだろ 読み込む仕事はずっと楽で高速だ プログラムが内部的に扱うだけなら、バイナリでもいい
- 418 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 01:16:53 ]
- >>416
Excelからの読み込みようデータでテキスト(もしくはバイナリ)出力を VBAで書いてもいいんじゃない? セルの値をファイルに出力するくらいならVB未経験でも ちょっと勉強すればできるようになると思うよ。
- 419 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 01:44:55 ]
- Excelのバージョンで動き違うし改ページ周り操作したら落ちるしデータ転送遅いし
xlsを書き出す必要がある時以外は使いたくないな
- 420 名前:デフォルトの名無しさん [2007/07/27(金) 09:08:25 ]
- VC2005 Expressを使っています。
一つのプロジェクトxでa.c, a.hを作成してそれらは同一フォルダのstdafx.hを読み込んでいます。 このa.cとa.hをそのままに、プロジェクトyでつかいたかったのでプロジェクトyにドラッグアンドドロップしてプロジェクトに追加して、 プロジェクトy特有のstdafx.hを作成してビルドすれば、 プロジェクトxではプロジェクトx内のstdafx.hを利用して、プロジェクトyではプロジェクトy内のstdafx.hを利用すると夢を見たのですが、 どちらのプロジェクトのa.cもプロジェクトxのstdafx.hを読んでいるようです。 include文に相対パスを書いておけば上のような利用法ができるとおもっていたのですが何とかする方法を教えてもらえないでしょうか。 a.cとa.hに手を加えずに双方のプロジェクトで使えるようにしたいのです。 具体的にはプロジェクトxはダイナミックリンクライブラリのプロジェクトなので#define DLLEXPORT __declspec(dllexport)をつけたくて、 プロジェクトyはスタティックリンクライブラリのプロジェクトなので、#define DLLEXPORT __noopをつけたいのです。
- 421 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 09:26:18 ]
- stdafx.hはプリコンパイルヘッダーのためにあるんだから
共通のものを読まないと意味が無いんだよ。 stdafx.hの中で差があるものを別のヘッダかソースに入れてしまえば。 もしくはプリコンパイルヘッダーの使用をやめてstdafx.hのインクルード自体やめるとか
- 422 名前:デフォルトの名無しさん [2007/07/27(金) 10:37:40 ]
- えと、↑420は、
C:\projectXXX\a.cがあって、C:\projectXXX\a.hでインクルードしているC:\projectXXX\b.hがあり、 プロジェクトxで利用されているとプロジェクトxではb.hはC:\projectXXX\b.hが読み込まれ、 projectXXX ソースファイル a.c(C:\projectXXX\a.c) ヘッダーファイル a.h(C:\projectXXX\a.h) b.h(C:\projectXXX\b.h) プロジェクトyではC:\projectXXX\a.cと、C:\projectXXX\a.hを利用し、 別途C:\projectYYY\b.hを用意しておけばプロジェクトとしての相対パスだからb.hはC:\projectYYY\b.hが読み込まれると思ってたんですが projectYYY ソースファイル a.c(C:\projectXXX\a.c) ヘッダーファイル a.h(C:\projectXXX\a.h) b.h(C:\projectYYY\b.h) コンパイル時、b.hはC:\projectXXX\b.hが読み込まれています。 includeはプロジェクトに入れているファイルから読んでくれるとおもっていたら ファイルシステムの相対パスでプロジェクトにいれていないファイルを読んでいるので これをプロジェクトに入れているファイルを使ってほしいという意味です。 >>421 プリコンパイルヘッダーの知識がほとんどないので勉強してみます。
- 423 名前:デフォルトの名無しさん [2007/07/27(金) 10:55:42 ]
- C言語で「yのx乗」って式を書く場合どうすればいいですか?
- 424 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:02:04 ]
- >>423
www.linux.or.jp/JM/html/LDP_man-pages/man3/pow.3.html
- 425 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:03:06 ]
- >>423
x**y
- 426 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:04:06 ]
- >>425
yのx乗だった y**x
- 427 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:08:01 ]
- ネタ回答で訂正レス入れる奴カッコワルイ
- 428 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:09:49 ]
- ワロタ
- 429 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:10:22 ]
- ウッサイ
- 430 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:19:25 ]
- C++ならこれで
#include <cstdio> #include <cmath> class Double { double val; public: Double(const double foo) : val(foo) {} double operator^(const double foo) const {return pow(val, foo);} }; こう書けるのだが。 std::cout << (Double(2.56) ^ 0.5); #演算子の優先順位の都合で括弧が必要なのが切ないw
- 431 名前:デフォルトの名無しさん [2007/07/27(金) 11:21:27 ]
- >>424
即レスありがとうございます。 mathが必要でしたか・・・for文でなんとかするかorz >>425-426 ぷぎゃーwww ちょっと信じかけた俺、涙目ノシ
- 432 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:29:50 ]
- C++で大容量CSVファイル(1GBくらいのでっかいやつ)を読み込みたいのだが、
今はwhileでget使って1バイトずつ読み込んでるんだが、いかんせん時間がかかって仕方ない もっと高速にやる方法って何かあるかな? 初心者なりに考えてみたけれどさっぱり思いつかない・・・
- 433 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:32:55 ]
- 1GBなんて素で読んでも時間かかると思うが、getって何かな?
CSVならまず1行ずつ読んでみては。
- 434 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:35:28 ]
- >>432
csvなら1行ずつ読むだろ……常考 まさか読み込んだ結果も丸ごとオンメモリで保持してないよな。 メモリ量にも拠るが、場合によってはデータの持ち方の工夫も必要かもよ。
- 435 名前:デフォルトの名無しさん [2007/07/27(金) 11:36:12 ]
- WindowsXP + BCB5 + FAT32です。
ファイルに実際には書き込むことなく、希望の長さのファイルを作る方法はないでしょうか。 chsizeは拡張部分を0で埋めます。 seekg + fwrite でできるかもと思いましたが、長さ0の書き込みでは ファイルが期待した長さになりません。
- 436 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:49:00 ]
- >>432
文字列処理の部分も疑ってかかるべきだが、IOの部分で言うと 移植性を捨ててmmap()やCreateFileMappingの類を使うのが一番速い。 C++の標準ライブラリだけでやるなら、 ・istreamではなくstreambufを使う。1文字読む版のget()に対応するのは sbumpc()だ。 ・streambuf::pubsetbuf()であらかじめ巨大なバッファを設定する ことで多少はマシになるだろう >>434 CSVってカラム内改行がLFで行末はCRLFだろ 少なくともstd::getline()は役に立たないんじゃないか
- 437 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:06:11 ]
- >>435
CreateFile() -> SetFilePointer() -> SetEndOfFile() で出来るはずだが、多分chsize()でも同じことをやっているはずで、 普通にやればゼロ埋めされると思う。 NTFSならいわゆるSparse Fileを作れた気もするがどうだったかな。 FAT32ではだめだろう。
- 438 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:26:22 ]
- 質問です
最近勉強はじめたんですけど本やらサイトなど見ながらやってます で、プログラムの書き方なんですが int main(void) と void main() ってのがあるんですけどどう違うのでしょう? 一般的にどっちが使われてるのですか?
- 439 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:29:36 ]
- intのほう
- 440 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:29:59 ]
- >>436
csvファイルと聞いて、カラム内改行をサポートしたフォーマットを想定する香具師がどれだけいるだろうか。 普通は、1Row読めると考えていいんでない? #大容量、速度優先と聞いた段階で1行=1Rowと想定した漏れ。
- 441 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:31:37 ]
- >>440
ttp://www.rfc-editor.org/rfc/rfc4180.txt
- 442 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:35:24 ]
- >>439
ありがとうございます そっちでやってみます でも結局意味は同じという事でしょうか?
- 443 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:37:46 ]
- >>441
つまり、セル内改行はCRLFだということか。 何だ、fgets()でいいじゃん。
- 444 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:39:27 ]
- >>442
いいえ。後者は規格不適合です。
- 445 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:40:16 ]
- >>443
行末がCRLFで セル内改行はCR「または」LFだ。よく読めよ。
- 446 名前:現実見ない人は気楽でいいね mailto:sage [2007/07/27(金) 12:45:14 ]
- なるほど、MSExcelやOpenOfficeCalcではRFC勧告に則っていないファイルを出力しているわけだ。
#see TEXTDATA それはそれとして、 >>445 CRやLFはDQUOTEで括らないといけないという記述はあるけど(see escaped)、 line breakがCRまたはLFだという記述はどこ?
- 447 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:46:14 ]
- >>444
そーゆうことですか ありがとうございます
- 448 名前:445 mailto:sage [2007/07/27(金) 12:55:53 ]
- >>446
このRFCは2005年に出来た新米だからな、MSのOffice従っているわけがないw セル内改行については、解釈方法をRFCでは規定してないっぽいな。 単にCRだのLFだのを入れられるがその場合はクオートしろってだけ。
- 449 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:57:20 ]
- へー、Excelだとフィールド内での改行(そう言えばなんで「カラム内改行」なんだろw)はLFなんだ。
で、RFCでは「改行」は「CRLF」だと明記されている。 つまり、RFCを持ち出した御仁はRFCを「よく」読まずに偉そうな御託を並べてたわけね。ふーん。
- 450 名前:デフォルトの名無しさん [2007/07/27(金) 12:57:33 ]
- どなたか >>422 のお相手をお願いします
- 451 名前:445 mailto:sage [2007/07/27(金) 12:58:49 ]
- >>449
すまんね。その通りだ。良く読んでなかったのを認めよう。 で、std::getline()は役に立ちそうかい?
- 452 名前:現実見ない人は気楽でいいね mailto:sage [2007/07/27(金) 13:00:49 ]
- 結論としては、csvと一言で言っても解釈がまちまちってことかい。まぁ、この業界じゃぁ在りがちだがね。
#しかし、「csvはRFCに則ってください」なんて言われた日には涙目だな、こりゃ。
- 453 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:01:12 ]
- \r\n
これってなん文字?
- 454 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:05:00 ]
- >>422
インクルードパスのサーチルールとプロジェクトは関係ない。 a.hにinclude "b.h"と書かれているのなら、a.h(にとって)のカレントからb.hを探すことになる。
- 455 名前:445 mailto:sage [2007/07/27(金) 13:05:12 ]
- >>452
RFCの規定だと、実質日本語は使えないからなw ま、元の質問者の意図はどうだか良くわからんし、これ以上言っても無駄だな。 セル内改行は要らないというんなら、それでいいんだろうし。 わざわざ「一文字読み」をしている理由を、俺はセル内改行の問題のためだと 推定したっつーだけのこと。
- 456 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:06:31 ]
- >>453
Cのソース内で例えば"\r\n"と書けば2文字と解釈される。 #但し、ターミネート文字に注意。 テキストファイルに単純に書けば、4文字と解釈されるだろう。
- 457 名前:449=443 mailto:sage [2007/07/27(金) 13:14:58 ]
- >>455
>俺はセル内改行の問題のためだと推定したっつーだけのこと。 理解した。こちらも言い過ぎ失敬。
- 458 名前:432 mailto:sage [2007/07/27(金) 13:19:51 ]
- なんか荒らしちゃったみたいで申し訳ない
1文字ずつってのは、これ課題なんだけどその際に「1文字ずつ読み込むように」って言われてたからなんだけれどその意図は聞いてないから答えられない・・・申し訳ない とりあえず言われた方法を一通りやってみます レス遅れてすまんかった、そしてありがとう
- 459 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:54:16 ]
- >>454
""で指定した場合カレントのstdafx.hを使うみたいなので<>を使って解決しました。 ありがとうございました。
- 460 名前:デフォルトの名無しさん [2007/07/27(金) 14:07:07 ]
- 例外処理というのは結局エラーになりそうなところで
エラー処理を書くってことだと思うんですけど 例外を使うのは単にエラー処理を用意するのと違って どういったメリットなどがありますか? 簡単なサンプルだけではいまいちよくわからなくて すっきりしません。
- 461 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:13:37 ]
- win32 apiの例外処理ならadvanced windows の例外処理の章をよむといいかも
- 462 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:17:56 ]
- >>460
エラーを検知するコードと、エラーを処理するコードを自然に分離できる。 典型的には、前者がライブラリで後者がアプリケーションの場合。 例外によるエラーの通知は無視したままプログラムの継続ができないことも 大きな特徴。エラーを無視したまま走り続けて不正な処理をすることを防げる。 あと↓ここ読んとけば? pc11.2ch.net/test/read.cgi/tech/1142667446/
- 463 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:27:24 ]
- エラーが発生したところで、どうしようもなく、ソフトを異常終了するしかない時に使う。
Cのmallocなどなら戻り値のチェックは絶対に忘れてはいけないし、忘れたらバグの元になり後々面倒になるが、C++のnewなどなら戻り値のチェックは不要。 例外がthrowされ、catchしなければ異常終了する。上の例で、メモリの確保ができなければ、ほとんどの場合継続動作できないからそれで十分。 逆にCのreadのような、ディスクの読み取りエラーのような時は普通使わない。
- 464 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:33:18 ]
- >>463
発生したところで異常終了するしかないなら、その場で exit() なり abort() なりすればいいだろう。 細かい read() をいくつも組み合わせるようなプログラムのときは 例外使うと便利だよ。
- 465 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:38:11 ]
- いちいちexitやabort書くのも面倒だよ
いっきにまとめてどっかーんなんて使い方ができるのも例外の魅力
- 466 名前:デフォルトの名無しさん [2007/07/27(金) 14:51:36 ]
- すいません。C言語初心者なんんですが、プログラムの作り方がわかりません。
計算を繰り返すのですが、最初に数字を入れて次に、+、-、*、/、=を画面に出力 し、=が選ばれるまで計算を繰り返すプログラムです。=が選ばれれば、合計が出 てくるようにし、そしてまた次の計算をするようにしたいんです。どなたか教えて いただけませんか?
- 467 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:54:18 ]
- >>466
自分で作ってみたのを出してみて
- 468 名前:デフォルトの名無しさん [2007/07/27(金) 14:58:04 ]
- どのぐらいの数の変数を宣言したらいいのかわからないんです。
- 469 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:59:30 ]
- >>468
必要なだけ作ったらいいよ。まずは書いて動かせ。
- 470 名前:デフォルトの名無しさん [2007/07/27(金) 15:01:18 ]
- ありがとうございます。
頑張ってやってみます。
- 471 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 15:01:37 ]
- >>468
適当でいいよ。とりあえず作れ
- 472 名前:デフォルトの名無しさん [2007/07/27(金) 15:08:04 ]
- #include"stdio.h"
int main(void) {int a,b,c; char d="+,-,*,/,="; scanf("%d",&a); printf("\n"); printf("%s\n",d); d=getchar(); switch(d){ case('+'): case("-"): case("*") case("/") case("=") } このcase(+)などの次が全くわかりません。
- 473 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 15:11:43 ]
- つまり電卓みたいにしたいのか。
まずは数字を入れたらそれを表示するだけのものを繰り返すものでも作っては。
- 474 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 15:14:13 ]
- >>472
人に見せるときはなるべくコンパイルできるようにしとけよ。 で、 + とかが入力されたときの動作はスレ住人にはさっぱり わからん。好きにしろ。それともエスパー募集か?
- 475 名前:デフォルトの名無しさん [2007/07/27(金) 15:15:21 ]
- 単純に一度だけ+、*などの計算をし、表示はできたのですが・・・。
- 476 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 15:15:26 ]
- >>474が見えない
- 477 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 15:17:59 ]
- 最初の数値一個と + だけで何を計算するんだろうな?
- 478 名前:デフォルトの名無しさん [2007/07/27(金) 15:24:53 ]
- +、-、*、/を選んだらまたscanfを使って=が入力されるまで計算したいんです。
- 479 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 15:30:47 ]
- >>478
まあそれは繰り返し(while 等)を覚えれば何とかなる。 計算のほうは仕様を明確にしてくれ。
- 480 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 16:07:03 ]
- >>466
大体こんな感じにやりたいんでしょ? #include<stdio.h> main(){int a,b=0;char c='+';for(;c!='=';){printf("数値");scanf("%d",&a);if(c=='+')b+=a;else if(c=='-')b-=a;else if(c=='*')b*=a;else if(c=='/')b/=a;printf("演算子");scanf(" %c",&c);}printf("%d\n",b);}
- 481 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 16:12:41 ]
- >>463
read()が例外をスローしないのは、Cだからだ。 いまどきの例外機構をもった言語なら「ディスクの読み取りエラー」では IOErrorのような例外がスローされるのが普通だ。 >エラーが発生したところで、どうしようもなく、ソフトを異常終了するしかない時に使う。 人に教えられるほど例外を理解していないぞ。
- 482 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 16:37:44 ]
- 例外はエラーじゃないし、ソフトを異常終了するしかない時も正しくない
463の説明からすると、例外なんて使わずexit()すべきということになる まっ、知ったかに教えてやることなんてないけどな
- 483 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 16:48:28 ]
- 最近のIVってなんなの〜?
- 484 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 17:50:14 ]
- >>463
>エラーが発生したところで、どうしようもなく、ソフトを異常終了するしかない時に使う。 俺が例外覚えたての頃の思考と同じだわ。 例外を有効に使えてない。
- 485 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 17:55:00 ]
- 今はどういう思考?
- 486 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 17:56:09 ]
- 低脳に、エラーが発生したところで、どうしようもなく、ソフトを異常終了するしかない時に使う。 と教える思考
- 487 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 18:00:38 ]
- を、俺が例外覚えたての頃の思考と同じだわ。 例外を有効に使えてない。と言う思考
- 488 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 18:05:03 ]
- エラーを考慮しなくていい中間の関数が便利だな
下の例外を上にまる投げ
- 489 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 00:24:44 ]
- int main(void)
{ for(int i=0;i<100;i++) { if(条件式) { // 何かの処理 // ※ここでbreak;するのとreturn 0;するので動作が同じ場合、 // どちらを使うべきでしょうか?サイズや速さに関係ありますか? } } return 0; }
- 490 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 00:38:56 ]
- >>489
サイズも速度も最適化が働けばそれほど気にするレベルじゃない。 俺個人はbreak派。別にreturnでもいいと思う。お好きなほうを
- 491 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 00:40:08 ]
- break; のが意味的にはいいんじゃないかな。
サイズとか速さとか、正直どうでもいいレベル。
- 492 名前:489 mailto:sage [2007/07/28(土) 01:00:34 ]
- どうもありがとうございました。
- 493 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 09:33:07 ]
- 気になるならアセンブリ出力させて比較すればいいじゃない
- 494 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 09:54:12 ]
- 1度しか実行されないものでそんなこと気にしても・・・。
- 495 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 20:28:12 ]
- プリコンパイル済みヘッダーを設定したくて調べてやってみたんですが
Debugの時は上手くできて、Releaseの時には大量のリンクエラーがでます 何故だかわかる方いらっしゃいますか? エラーメッセージはこんな感じです ↓ (なんだかよく解らない長い文字列)は***(ファイル名)で既に使用されています
- 496 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 20:41:54 ]
- デバッグとリリースで同じ設定にしてるか?
フルビルドしてみたか?
- 497 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 20:43:33 ]
- >>495
ReleaseとDebugで設定が違うんじゃないかな。 VC++ならプロジェクトのプロパティで構成を変えればそれぞれの項目が変わってるか確認できるはず。 全ての構成にして空白になっているところがあれば怪しいと思われ、DebugとReleaseで違う項目だと空白になるから。 Debugでは指定しているファイル(ヘッダー)が無いReleaseでは無いとか初心者が陥る罠。
- 498 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 21:19:51 ]
- >>496 >>497
同じ設定というか、DebugもReleaseもプリコンパイル済みヘッダーの部分と 追加のインクルードディレクトリ、追加のライブラリの部分以外はいじってません(デフォルトのままです) 何か設定を変えなきゃいけないところがあるのでしょうか? あと、こういう警告もたくさん出ていました↓ warning C4727: 同じタイムスタンプを伴う、**.pch と名前指定された PCH が ***.obj で見つかりました。最初の PCH を使用します。
- 499 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 21:26:07 ]
- >>495です
プログラムの全体の最適化 の項目を「いいえ」にすると 違う警告が出るようになりましたが、エラーはなくなりました 他にも色々設定をいじってみます >>496さん>>497さん ありがとうございました
- 500 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 23:42:06 ]
- 小野坂とかアナゴさんとかチワとかレナとか色々でてるな。
ところで今回のサザエさんはアナゴさん回なのにいつから始まるか分からない件
- 501 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 23:42:42 ]
- そうだな
- 502 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 23:51:47 ]
- アニメスレと間違えたぜ
- 503 名前:名無しさん@そうだ選挙に行こう [2007/07/29(日) 05:40:09 ]
- Windowsのiniファイルなんだけども、
単に読み書きだけじゃなく、コメントとかも付けようとしたら、やっぱり自前?
- 504 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 06:15:42 ]
- C言語で、0で割る計算エラーなんだけど
必要なもの宣言してるとして、 scanf("%d",&a);//前数 scanf("%d",&b);//後ろ数 printf("演算子の入力"); fflush(stdin); o = getchar(); if(o=='/'|| o=='%' && b=="0"){ printf("エラーです。数値、演算子をお確かめください。\n"); } とここまでやってelseで x=a%b; や x=a/b; すると異常終了しちゃう。 演算子が「/」または「%」、かつ割数が「0」なら if使って計算式までいかないようにしてるつもりなんですけど、 なぜエラーなのかわかりません。教えて下さらないでしょうか?
- 505 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 06:26:00 ]
- || より && の方が優先順位が高いから if 文の中身は
( (o=='/'|| o=='%') && b=="0") って書かなきゃダメだと思われ。
- 506 名前:504 mailto:sage [2007/07/29(日) 06:34:05 ]
- >>505
そちらも試したのですがだめなのです。 おそらくif乗り越えての計算で不正終了、てな気がするんですけど。 この条件式でどこが駄目なのかさっぱり・・・。
- 507 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 06:38:25 ]
- んではこれで。
( (o=='/'|| o=='%') && b==0)
- 508 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 06:38:25 ]
- マテ。bはintだろ。b=="0"ってのはおかしいだろ。コピペミス?
ちょいソース全部貼ってみて(長いようなら、うpロダに上げて)
- 509 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 06:41:46 ]
- 文字列定数と比較してるせいだと思うけど。
- 510 名前:504 mailto:sage [2007/07/29(日) 06:47:44 ]
- >>507
うおっ!できました! intをダブルクオーテーションで囲んでたのがミスだったのですか ありがとうございます! >>508 a,b,xはintで oはcharにしてました。 intは「”」 不要だったんですね迂闊でした。 >>509 charとの比較ですかね? とりあえず>>508で解決しました!
- 511 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 06:53:32 ]
- "0"との比較だよカス
- 512 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 06:58:15 ]
- コンパイラエラー吐かないの?
- 513 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 07:57:43 ]
- main関数にある関数のポインタを返す関数
get_numを使いたいんですが、宣言はどうすればいいでしょうか。 #include <stdio.h> int zero(void){return 0;} int one(void){return 1;} int two(void){return 2;} int (*(*get_num))(void) { static int (*num[3])(void) = {zero, one, two}; return num; } int main(void) { int (*num[3])(void) = {zero, one, two}; printf("%d\n", (*num[0])()); return 0; }
|

|