スレを勃てるまでもないC/C++の質問はここで 4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/09/17(水) 15:41:48過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
0189デフォルトの名無しさん
2008/11/04(火) 19:45:01>前と後ろの"__"は何で2つなんだろうか?
>最後の"_"が1つの物もあるけれどどう違うのか?
別に1個でも2個でも0個でもいいが、
アンダーバーの多い方が他の識別子 (変数名とか関数名とか) とかぶりにくい
>"_"は本来.(ドット)ですが、何でもかんでも"_"になってますけどこれは何なの?
マクロ名にドットやスペースは使えないから止むを得ない
0190デフォルトの名無しさん
2008/11/04(火) 19:48:03昔のコンパイラは、
#pragma once
がサポートされていなかったので、それの代わり。 相互参照され
ているクラスなどで、同じincludeファイルを二度読みして再定義
エラーを出さないための工夫。
途中の意味不明なキャラクタの羅列は、GUIDを使って、定義名が
重複してしまうのを防いでいるだけ。
0191181
2008/11/04(火) 19:59:16この質問自体が仮説だとして考えて頂ければ幸いです
インポート.dllがある場合、この中身の値をエクスポートに変えて別名で保存したら
エクスポートが出来るのではないかと考え、いま試していますがやはり.exe内の値「プルダウンからのエクスポート機能起動」などの関連付けも必要になってきそうです
0192デフォルトの名無しさん
2008/11/04(火) 21:31:32int m,t;
があった時に
m>?=t;
という式を実行したら何が起こるのでしょうか??
初めてみたのですが、
if (m<t) {
m = t;
}
と同値ですか?
どうやらそんな気がするのですが
m>?=t; と m<t が逆でなんかおかしい気も....
よろしくお願いいたしますm(__)m
0193デフォルトの名無しさん
2008/11/04(火) 21:34:30標準にはないぞ。
0194デフォルトの名無しさん
2008/11/04(火) 21:39:170195デフォルトの名無しさん
2008/11/04(火) 21:42:23すみません。
Red Hat 3.4.6-3です。
cygwinとかでやったらエラーになりますが...Red Hat 3.4.6-3だと通ります...
0197デフォルトの名無しさん
2008/11/04(火) 22:08:33>? は大きい方を返す演算子。GCC 拡張
ttp://gcc.gnu.org/onlinedocs/gcc-3.0.4/gcc_6.html
0198デフォルトの名無しさん
2008/11/05(水) 02:41:30デコンパイルしてどうにかできるんならそうすれば?
0199デフォルトの名無しさん
2008/11/05(水) 07:17:13結果を整数型の変数に代入してるからだろ
0200デフォルトの名無しさん
2008/11/05(水) 11:15:18その組み合わせだと、結果はdoubleになるね。
0201デフォルトの名無しさん
2008/11/05(水) 14:32:07きめぇw
0202デフォルトの名無しさん
2008/11/06(木) 20:33:130203デフォルトの名無しさん
2008/11/06(木) 21:34:16どう定義すればいいんですか。ただ#include<math.h>を書くだけではだめなのですか。
なんかコンパイルしたときに、sin,cos,tanが定義されていないというエラーが出たのですが・・・
0204デフォルトの名無しさん
2008/11/06(木) 21:36:56-lm -lm -lm -lm -lm -lm -lm -lm -lm -lm
0205デフォルトの名無しさん
2008/11/06(木) 21:47:03(C/C++を使うのは)難しい
0206デフォルトの名無しさん
2008/11/07(金) 00:22:24機能や応用などを考えるとCreateFIleをメインで勉強した方がいいですかね?
0207デフォルトの名無しさん
2008/11/07(金) 01:57:58わざわざそうする意味はない、fopenですむ状況ならfopen使っとけ
お前の考える機能や応用がなんなのかは知らんが
0208183
2008/11/07(金) 12:35:56サンクスコ。もっとなじんだよ。
なんか、こう、手のひらになじんできた気がするよ
おそレスゴメソ
0209デフォルトの名無しさん
2008/11/07(金) 19:39:34と初期化したら
a[0][1] = 2
a[0][2] = 2
a[0][3] = 0
のように、1次元目が0の場所に最初の{ }が代入されますか?
0210デフォルトの名無しさん
2008/11/07(金) 20:33:350211デフォルトの名無しさん
2008/11/07(金) 20:34:11a[0][0] = 2
a[0][1] = 2
a[0][2] = 0
0212デフォルトの名無しさん
2008/11/07(金) 22:07:52読込先がLPSTRだからいちいち適当な領域を確保しなきゃいけないんだけど何とかなりませんかね?
理想を言えばstring型に直接代入したいんだけど…
0213デフォルトの名無しさん
2008/11/07(金) 22:09:200214デフォルトの名無しさん
2008/11/07(金) 22:21:17始めて半年の素人に正規表現とか無理だわorz
どうせ自分用ツールだし、数字でっち上げて運用回避するよ
回答ありがとう
0215デフォルトの名無しさん
2008/11/07(金) 22:22:320216デフォルトの名無しさん
2008/11/07(金) 22:27:500217デフォルトの名無しさん
2008/11/07(金) 23:10:08事前にそのiniファイルのサイズを取得しておけば?
0218デフォルトの名無しさん
2008/11/07(金) 23:13:19その発想はなかった!�d
0219デフォルトの名無しさん
2008/11/08(土) 06:47:41forkしたプロセスをブロッキングせずにループで終了を待ちたいのですが、何か方法はありますか?
環境は
Linux 2.6
gcc4.0
です
0220デフォルトの名無しさん
2008/11/08(土) 07:09:41waitpid を WNOHANG つきで呼びなしゃい
0221デフォルトの名無しさん
2008/11/08(土) 22:39:25この場合、文字列として読み込んでから1桁ずつ調べて順番に入れていくしか方法はないでしょうか?
0222デフォルトの名無しさん
2008/11/09(日) 00:18:030223デフォルトの名無しさん
2008/11/09(日) 02:17:07どうもありがとうございました。
もっとmanを読むべきでした・・・
0224デフォルトの名無しさん
2008/11/09(日) 05:00:330225デフォルトの名無しさん
2008/11/09(日) 05:03:22どうやるんでしょうか 教えてくださいお願いします
0226デフォルトの名無しさん
2008/11/09(日) 09:57:40system()
>>225
ブラウザを引き数つきで起動。
0227デフォルトの名無しさん
2008/11/10(月) 09:57:58どっちも、::ShellExecute() でいける。
Webを開くには、exeパスの代わりにURL文字列("http://www.yahoo.co.jp")
を渡し、コマンドに"open"あとの引数は、NULLでよいかと。
exeやcom、bat以外のデータファイルのパスを与えると、拡張子に関連付け
られたプログラム(例えば.txtならメモ帳)が起動する。
ちなみに、起動されるブラウザは「標準のブラウザ」になる。 通常は
IEだが、「スタートメニュー」−「プログラムのアクセスと既定の設定」
でMozilla等IE以外のブラウザを選択していれば、そのブラウザが使わ
れる。
0228デフォルトの名無しさん
2008/11/10(月) 10:03:21CStdioFileクラスを使う。
CStdioFile file;
CString strLineBuf;
CStringArray arrFileBuf;
if(file.Open(...))
{
while(file.ReadString(strLineBuf))
{
arrFileBuf.Add(strLineBuf):
}
file.Close();
}
0229デフォルトの名無しさん
2008/11/10(月) 12:57:390230デフォルトの名無しさん
2008/11/10(月) 13:08:43{
int sortr[9],sortg[9],sortb[9];
col.r = median(sortr); ☆
col.g = median(sortg); ☆
col.b = median(sortb); ☆
return TRUE;
}
int median(int *sort)
{
〜〜〜
}
これをビルドしようとすると☆の行で
error C3861: 'median': 識別子は、引数依存の照合を使用しても見つかりません。
となるんですが、どうすればいいでしょうか?
0231デフォルトの名無しさん
2008/11/10(月) 13:14:37int medianfilter()の前にint median(int * sort)を移動。できればstaticもつけておく。
0232デフォルトの名無しさん
2008/11/10(月) 13:50:48出来ました。
ありがとうございました。
0233デフォルトの名無しさん
2008/11/10(月) 16:23:13上記のa6b.c a6c.c a6d.c でつくった関数をa6a.cでexternを使って呼び出したいのですが、コンパイル時にエラーが出てしまいます。どなたか対処法をお願いします。externを使わずに1つのソースとしてコンパイルすると成功し実行もできます。
エラー内容
$ gcc -o a6a a6a.c
In file included from a6a.c:5:
a6c.c:9: error: conflicting types for 'matrix'
a6b.c:9: error: previous declaration of 'matrix' was here
In file included from a6a.c:6:
a6d.c:9: error: conflicting types for 'matrix'
a6c.c:9: error: previous declaration of 'matrix' was here
a6d.c:9: error: conflicting types for 'matrix'
a6c.c:9: error: previous declaration of 'matrix' was here
a6a.c:12: error: conflicting types for 'matrix'
a6d.c:9: error: previous declaration of 'matrix' was here
a6a.c:12: error: conflicting types for 'matrix'
a6c.c:9: error: previous declaration of 'matrix' was here
a6a.c:14: error: conflicting types for 'omatrix'
a6d.c:12: error: previous definition of 'omatrix' was here
a6a.c:15: error: conflicting types for 'amatrix'
a6b.c:12: error: previous definition of 'amatrix' was here
a6a.c:16: error: conflicting types for 'mmatrix'
a6c.c:12: error: previous definition of 'mmatrix' was here
0234デフォルトの名無しさん
2008/11/10(月) 16:27:29hファイルにプロトタイプ宣言を書いて、それをincludeすればいい。
0235デフォルトの名無しさん
2008/11/10(月) 16:30:18これもhに入れてそれぞれincludeすりゃいい。
あと、その時のコンパイルは、gcc -o a6a a6a.c a6b.c a6c.c a6d.c で
0236デフォルトの名無しさん
2008/11/10(月) 16:54:330237デフォルトの名無しさん
2008/11/10(月) 16:59:46extern入れてるし、それぞれでtypedefしてるからなくてもいいだろ。
コンパイルだけ>>235のとおりでやってみ
0238デフォルトの名無しさん
2008/11/10(月) 17:08:58できました!ありがとうございます。
0239デフォルトの名無しさん
2008/11/10(月) 17:49:53とりあえずDXライブラリというのは一通り理解したんだが
つぎのステップとしてはやっぱwindowsAPIを本格的にやるのがいいんですかね?
0240デフォルトの名無しさん
2008/11/10(月) 18:30:530241デフォルトの名無しさん
2008/11/10(月) 18:41:44で、ちょっとDXライブラリの機能だけじゃ物足りないかなーとか思い始めたんで・・・。
3Dとかにも挑戦してみたいと。
すみません。
0242デフォルトの名無しさん
2008/11/10(月) 18:53:13まあ普通にWindow作ってみるのもいいかもね。
0243デフォルトの名無しさん
2008/11/10(月) 20:01:14GDI+とか。
0244デフォルトの名無しさん
2008/11/10(月) 21:45:46自前で3Dライブラリ作るのが当たり前なのか。。。
がんばってね。応援してるぜ
0245デフォルトの名無しさん
2008/11/10(月) 21:48:500246デフォルトの名無しさん
2008/11/10(月) 22:21:28CLIの中でWIN32って使えますか?
イメージは
CLIで画面を作って
WIN32のプログラムを入れてみたいのですが・・・
h8やPICのCからVCは難し過ぎです
0247デフォルトの名無しさん
2008/11/10(月) 23:11:00あと、Win32がメインの俺にはマイコンのほうこそ別次元の難しさを感じるぞ。
0248デフォルトの名無しさん
2008/11/10(月) 23:17:24サンキューです
マイコンはイベントじゃないから書きやすいよ
0249デフォルトの名無しさん
2008/11/11(火) 02:38:47いやいや、DXライブラリの機能じゃ物足りないって言ってるんだから。
きっとすげえんだよ、彼は。
0250デフォルトの名無しさん
2008/11/11(火) 21:00:09c++でWindows標準のメモ帳起動させて40文字3行程度書き込んでメモ帳閉じる
これできますか?
サンプル貰えたら嬉しいです
0251デフォルトの名無しさん
2008/11/11(火) 22:23:21「メモ帳」アプリを起動して、そこに文字を流し込むと言うGUIの動きに何か意味があるの?
そうでないなら、適当なファイルを開いて書き出すだけだがね。
入門書を読めば嫌でもサンプルが見つかると思うぞ。
0252デフォルトの名無しさん
2008/11/11(火) 22:32:390253デフォルトの名無しさん
2008/11/12(水) 08:11:04どもレスありがと
VC++6.0のサンプルってVC++2008で動かないのもあるんですか?
基本的に全部動くはずなんですよね?
0254デフォルトの名無しさん
2008/11/12(水) 10:25:52ほとんどは機械的な置き換えで対処できる。
0255デフォルトの名無しさん
2008/11/12(水) 12:46:09func(buff)として void func(vector<string> &buff)という関数に渡す。
この関数でbuffに3つの文字列を入れる。
buff[0] ="hoge";
buff[1] ="huga";
っていう処理を書いたんですが、問題点とかありますか?
0256デフォルトの名無しさん
2008/11/12(水) 13:16:47カプセル化されていないとか、気持ち悪いとか、そういった類を除けば特に問題ないかと。
0257デフォルトの名無しさん
2008/11/12(水) 20:52:040258デフォルトの名無しさん
2008/11/12(水) 21:04:46CLIやるならC#でいいじゃんて感じ
0259デフォルトの名無しさん
2008/11/13(木) 07:42:19int array[3][4]={
{7,8,-2,3},
{6,-2,9,7},
{1,5,9,-8}
};
という部分で
error C2078: 初期化子の数が多すぎます。
とエラーが出ます。
中身を減らしても、array[10][10]とかにしてもエラーが出るのですが
これはどういうことなんでしょう?
0260のっちー
2008/11/13(木) 09:13:41int array[3][4]={
7,8,-2,3,
6,-2,9,7,
1,5,9,-8
};
0261デフォルトの名無しさん
2008/11/13(木) 09:17:31>259は何か勘違いをしていると思われ。
0262259
2008/11/13(木) 09:59:34C++とCの違いの問題なんでしょうか?
0263デフォルトの名無しさん
2008/11/13(木) 11:05:48あっても無くてもどっちでもいい
>>262お前の勘違いだから気にするな
0264デフォルトの名無しさん
2008/11/14(金) 12:14:420265デフォルトの名無しさん
2008/11/14(金) 12:41:150266デフォルトの名無しさん
2008/11/14(金) 12:50:100267デフォルトの名無しさん
2008/11/14(金) 22:22:18画像を連続で読み込んでいくにはどうすればよいでしょうか?
0268デフォルトの名無しさん
2008/11/15(土) 00:39:280269デフォルトの名無しさん
2008/11/15(土) 03:40:23・フォルダ内の全ての画像を連続で読み込む
・それぞれのファイルに赤目補正をする
っていうのはそんなに簡単じゃないよ。
ついでに言うと
・動画ファイルを読み込む
・圧縮形式を変換する
というのも欲しいかもしれないけれど、これもそんなに簡単じゃないよ。
なのでフォトショップでも買ってバッチ処理でもやってくださいな。
0270デフォルトの名無しさん
2008/11/15(土) 09:18:21一つ一つ呼び出してある処理をかけたいのです。
画像のファイルネームを渡せばその画像を読み込んでくれる関数はあるのですが、
100個もファイルネームを用意するのは面倒です。
for文とかの繰り返し文の処理でなんとかならないでしょうか?
0271デフォルトの名無しさん
2008/11/15(土) 10:24:30ファイル形式でフィルタして必要なファイルだけ抽出。
あとは好きなだけ処理すればよし。
0272デフォルトの名無しさん
2008/11/15(土) 11:14:070273デフォルトの名無しさん
2008/11/15(土) 12:34:02数字以外の部分が同じならsprintfでファイル名を作成できる
for (i = 0; i <= 100; i++)
{
sprintf(filename, "xxx%03d.cif", i);
// 処理
}
0274デフォルトの名無しさん
2008/11/15(土) 20:12:37なるほど〜ありがとうございます!
0275デフォルトの名無しさん
2008/11/17(月) 03:17:55動く物体をカメラが自動追跡する
監視カメラのような機械を作っています。
処理の流れとしては
1.カメラ画像を解析して追跡対象の位置、速度を計算
2.上の結果に基づきパンチルト台の方向、角速度を決める
の二つを以下のようにwhile文で交互に連続で行い追跡しました。
while(loop){
画像解析
パンチルト台の操作
}
しかしこの方法だと画像解析の間はパンチルトができず、
パンチルト台が動いている間は画像解析が止まり、
ゆっくり動く物体はともかく高速で動く物体は追跡できません。
カメラ、パンチルト台共にc++で制御できる環境になっています。
二つの動作をそれぞれ独立かつ同時に行いながら連絡し合う、
この場合は画像解析と台の操作を
別々に二つのwhile文で同時に処理しながら、
片方からもう片方のwhileの文の中へ値を渡すような、
そんな方法って何かないでしょうか?
0276デフォルトの名無しさん
2008/11/17(月) 03:22:140277デフォルトの名無しさん
2008/11/17(月) 03:33:09ありがとうございます。
初めて知ったので早速勉強してみます。
ちなみにVisualStudio2005を使っています。
0278デフォルトの名無しさん
2008/11/17(月) 03:37:58Wiiリモコン+センサーバーを使った遊びみたいでイイネ
0279デフォルトの名無しさん
2008/11/17(月) 03:57:11確かにちょっとしたおもちゃを作っているような感じでやってます。
私は追跡が精一杯ですが、どっかの大学には
この技術のすごいやつ+ロボット制御で
飛んできたボールをバットで打ち返すロボットがいるそうです。
いつかASIMOに搭載されたりするんでしょうか。
ちなみに台は
ttp://www.revast.co.jp/Pt_He/pantilt.html
カメラは2000円の安いUSBカメラです。
0280デフォルトの名無しさん
2008/11/17(月) 12:55:00すでにPCにインストール済みのdll内のAPIを、Webブラウザ(今回はIE限定)からコールしようとしています。
イントラ内あるいは認証後のWebなど、限られたユーザのみに提供予定で、「信頼済みサイト」に登録するのか可能な状態です。
こういった場合、C++でActiveXコントロールを作るといい、と前に別スレで教わったのですが、
ローカル資産にブラウザからアクセスするのがセキュリティ上好ましくないからか、資料が見つかりませんでした。
そういうサイト、あるいは本でもいいので、もしあれば教えてください。
0281280
2008/11/17(月) 13:11:21Visual Studio 2008 Professional Editionで、OSはXP HomeとVista Businessです。
IEは6以上と考えています。
0282りょ
2008/11/17(月) 15:08:35これで社員Idを送ってるらしいんだけど、
これを自分のとこのページでこの社員IDをキーにデータを取得するのはどうやるんですか?
0283デフォルトの名無しさん
2008/11/17(月) 15:22:350284デフォルトの名無しさん
2008/11/17(月) 16:46:32関数ポインタの書き方を教えて下さい。
やりたいのは
・構造体Sに関数ポインタを持たせたい
・Sへのポインタ(S *s)を渡すと
Sが保持してる関数(s->func)に引数を与えて呼び出す関数が書きたい
・Sに保持する関数funcは
引数が3つほどあり(いずれも構造体へのポインタ)
戻り値も構造体へのポインタ
だいたいで書くとこんな感じです:
// s.h
typedef struct {
R *func(A *, B *, C *);
} S;
R *caller(S *s) {
A a; B b; C c;
s->func(&a,&b,&c);
}
続く
0285デフォルトの名無しさん
2008/11/17(月) 16:49:38#include "s.h"
R *func1(A *a, B *b, C *c) {
// 処理
return Rのポインタ;
}
R *func2(A *a, B *b, C *c) {
// 処理
return Rのポインタ;
}
int main() {
S s1, s2;
s1.func = func1;
s2.func = func2;
caller(s1);
caller(s2);
return 0;
}
…と、こんな感じのことがしたいです
(ヘッダの使い方が間違ってたりするのは実際書くとき直します)
関数ポインタは全然書き方が分からなくて文法がおかしいと思いますが
その関数ポインタ関連の正しい書き方が分からなくて…
0286デフォルトの名無しさん
2008/11/17(月) 16:53:45関数型をtypedefしてしまえば普通に書けるべ。
typedef R * func_t(A * a, B * b, C * c);
typedef struct S {
func_t * func;
} S;
0287デフォルトの名無しさん
2008/11/17(月) 17:09:44typedef の行で
error: syntax error before '*' token
warning: data definition has no type or storage class
と出ます…
0288デフォルトの名無しさん
2008/11/17(月) 17:13:12こうでしょ。RやA,B,Cは定義済みのやつにかえてるよね?
■ このスレッドは過去ログ倉庫に格納されています