トップページ⇒tech
1001コメント330KB

スレを勃てるまでもないC/C++の質問はここで 4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/09/17(水) 15:41:48
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもない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/
0219デフォルトの名無しさん2008/11/08(土) 06:47:41
質問よろしくお願いします。
forkしたプロセスをブロッキングせずにループで終了を待ちたいのですが、何か方法はありますか?
環境は
Linux 2.6
gcc4.0
です
0220デフォルトの名無しさん2008/11/08(土) 07:09:41
>>219
waitpid を WNOHANG つきで呼びなしゃい
0221デフォルトの名無しさん2008/11/08(土) 22:39:25
bitsetの内容をiniに保存したいんだけど、桁が多いと当然unsigned longじゃ足りないじゃないですか。
この場合、文字列として読み込んでから1桁ずつ調べて順番に入れていくしか方法はないでしょうか?
0222デフォルトの名無しさん2008/11/09(日) 00:18:03
WinAPIのgetPrivateProfile〜()を使うと言う前提なら、〜String()を使うしかないっしょ。
0223デフォルトの名無しさん2008/11/09(日) 02:17:07
>>220
どうもありがとうございました。
もっとmanを読むべきでした・・・
0224デフォルトの名無しさん2008/11/09(日) 05:00:33
C,C++のソース内でexeファイルを実行するのってどうやるんですか?
0225デフォルトの名無しさん2008/11/09(日) 05:03:22
すいません、あとソース内でIEを開いてyahooを開く処理って
どうやるんでしょうか 教えてくださいお願いします
0226デフォルトの名無しさん2008/11/09(日) 09:57:40
>>224
system()

>>225
ブラウザを引き数つきで起動。
0227デフォルトの名無しさん2008/11/10(月) 09:57:58
>>224-225
どっちも、::ShellExecute() でいける。

Webを開くには、exeパスの代わりにURL文字列("http://www.yahoo.co.jp")
を渡し、コマンドに"open"あとの引数は、NULLでよいかと。

exeやcom、bat以外のデータファイルのパスを与えると、拡張子に関連付け
られたプログラム(例えば.txtならメモ帳)が起動する。

ちなみに、起動されるブラウザは「標準のブラウザ」になる。 通常は
IEだが、「スタートメニュー」−「プログラムのアクセスと既定の設定」
でMozilla等IE以外のブラウザを選択していれば、そのブラウザが使わ
れる。
0228デフォルトの名無しさん2008/11/10(月) 10:03:21
>>212

CStdioFileクラスを使う。

  CStdioFile file;
  CString strLineBuf;
  CStringArray arrFileBuf;

  if(file.Open(...))
  {
    while(file.ReadString(strLineBuf))
    {
      arrFileBuf.Add(strLineBuf):
    }
    file.Close();
  }

0229デフォルトの名無しさん2008/11/10(月) 12:57:39
最早、GetPrivateProfileString()は捨てられているのね。
0230デフォルトの名無しさん2008/11/10(月) 13:08:43
int medianfilter()
{
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:37
>>230
int medianfilter()の前にint median(int * sort)を移動。できればstaticもつけておく。
0232デフォルトの名無しさん2008/11/10(月) 13:50:48
>>231
出来ました。
ありがとうございました。
0233デフォルトの名無しさん2008/11/10(月) 16:23:13
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7987.txt

上記の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:29
cファイルをincludしたら同じ名前の関数があちこちできちゃうだろ。
hファイルにプロトタイプ宣言を書いて、それをincludeすればいい。
0235デフォルトの名無しさん2008/11/10(月) 16:30:18
つーか今回は同じtypedefか
これもhに入れてそれぞれincludeすりゃいい。
あと、その時のコンパイルは、gcc -o a6a a6a.c a6b.c a6c.c a6d.c で
0236デフォルトの名無しさん2008/11/10(月) 16:54:33
hファイルというものを使う方法以外に何かありませんか?作り直してみましたが、hファイルなんてまったく使ったことがなかったのでエラーがたくさんでてしまいました。
0237デフォルトの名無しさん2008/11/10(月) 16:59:46
じゃあinclude無しで。
extern入れてるし、それぞれでtypedefしてるからなくてもいいだろ。
コンパイルだけ>>235のとおりでやってみ
0238デフォルトの名無しさん2008/11/10(月) 17:08:58
>>237
できました!ありがとうございます。
0239デフォルトの名無しさん2008/11/10(月) 17:49:53
ゲーム作ってるんだけど
とりあえずDXライブラリというのは一通り理解したんだが
つぎのステップとしてはやっぱwindowsAPIを本格的にやるのがいいんですかね?
0240デフォルトの名無しさん2008/11/10(月) 18:30:53
いや、作ってみればいいんでない?一通り理解したなら。
0241デフォルトの名無しさん2008/11/10(月) 18:41:44
あ、ごめんなさい。作ったんです。
で、ちょっとDXライブラリの機能だけじゃ物足りないかなーとか思い始めたんで・・・。
3Dとかにも挑戦してみたいと。
すみません。
0242デフォルトの名無しさん2008/11/10(月) 18:53:13
DXライブラリはその辺全部やっちゃうからな。
まあ普通にWindow作ってみるのもいいかもね。
0243デフォルトの名無しさん2008/11/10(月) 20:01:14
>>242
GDI+とか。
0244デフォルトの名無しさん2008/11/10(月) 21:45:46
DirectXって結構しょぼいんだね。
自前で3Dライブラリ作るのが当たり前なのか。。。

がんばってね。応援してるぜ
0245デフォルトの名無しさん2008/11/10(月) 21:48:50
D3DXがあるだろ
0246デフォルトの名無しさん2008/11/10(月) 22:21:28
vc++2008で質問です。

CLIの中でWIN32って使えますか?

イメージは
CLIで画面を作って
WIN32のプログラムを入れてみたいのですが・・・

h8やPICのCからVCは難し過ぎです
0247デフォルトの名無しさん2008/11/10(月) 23:11:00
できる。
あと、Win32がメインの俺にはマイコンのほうこそ別次元の難しさを感じるぞ。
0248デフォルトの名無しさん2008/11/10(月) 23:17:24
>>247
サンキューです

マイコンはイベントじゃないから書きやすいよ
0249デフォルトの名無しさん2008/11/11(火) 02:38:47
>>245
いやいや、DXライブラリの機能じゃ物足りないって言ってるんだから。
きっとすげえんだよ、彼は。
0250デフォルトの名無しさん2008/11/11(火) 21:00:09
こんちわ
c++でWindows標準のメモ帳起動させて40文字3行程度書き込んでメモ帳閉じる
これできますか?
サンプル貰えたら嬉しいです
0251デフォルトの名無しさん2008/11/11(火) 22:23:21
>>250
「メモ帳」アプリを起動して、そこに文字を流し込むと言うGUIの動きに何か意味があるの?
そうでないなら、適当なファイルを開いて書き出すだけだがね。
入門書を読めば嫌でもサンプルが見つかると思うぞ。
0252デフォルトの名無しさん2008/11/11(火) 22:32:39
CreateProcessしてFindWindowしてSendMessageすりゃいいだけ
0253デフォルトの名無しさん2008/11/12(水) 08:11:04
こんちわ
どもレスありがと

VC++6.0のサンプルってVC++2008で動かないのもあるんですか?
基本的に全部動くはずなんですよね?
0254デフォルトの名無しさん2008/11/12(水) 10:25:52
一部変わったからコンパイルできないものもあるだろうけど
ほとんどは機械的な置き換えで対処できる。
0255デフォルトの名無しさん2008/11/12(水) 12:46:09
vector<string> buff(3);を

func(buff)として void func(vector<string> &buff)という関数に渡す。

この関数でbuffに3つの文字列を入れる。
buff[0] ="hoge";
buff[1] ="huga";


っていう処理を書いたんですが、問題点とかありますか?
0256デフォルトの名無しさん2008/11/12(水) 13:16:47
>>255
カプセル化されていないとか、気持ち悪いとか、そういった類を除けば特に問題ないかと。
0257デフォルトの名無しさん2008/11/12(水) 20:52:04
C++とC++/CLIってどちらが高尚なの?
0258デフォルトの名無しさん2008/11/12(水) 21:04:46
>>257
CLIやるならC#でいいじゃんて感じ
0259デフォルトの名無しさん2008/11/13(木) 07:42:19
vc++2008にて質問なのですが

int 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:41
中の、中かっこっているんでしたっけ?

int array[3][4]={
7,8,-2,3,
6,-2,9,7,
1,5,9,-8
};
0261デフォルトの名無しさん2008/11/13(木) 09:17:31
要ります。
>259は何か勘違いをしていると思われ。
02622592008/11/13(木) 09:59:34
gccでやったら問題なく通りました。
C++とCの違いの問題なんでしょうか?
0263デフォルトの名無しさん2008/11/13(木) 11:05:48
>>261
あっても無くてもどっちでもいい
>>262お前の勘違いだから気にするな
0264デフォルトの名無しさん2008/11/14(金) 12:14:42
いや括弧はないとだめだよ
0265デフォルトの名無しさん2008/11/14(金) 12:41:15
やってみた?
0266デフォルトの名無しさん2008/11/14(金) 12:50:10
どの環境条件で?
0267デフォルトの名無しさん2008/11/14(金) 22:22:18
C言語で動画像を処理したいのですが、
画像を連続で読み込んでいくにはどうすればよいでしょうか?
0268デフォルトの名無しさん2008/11/15(土) 00:39:28
どうすればって、画像の読み込み処理を連続で実行すればいいのでは
0269デフォルトの名無しさん2008/11/15(土) 03:40:23
C言語に何を求めてるのか分からんが
・フォルダ内の全ての画像を連続で読み込む
・それぞれのファイルに赤目補正をする
っていうのはそんなに簡単じゃないよ。

ついでに言うと
・動画ファイルを読み込む
・圧縮形式を変換する
というのも欲しいかもしれないけれど、これもそんなに簡単じゃないよ。

なのでフォトショップでも買ってバッチ処理でもやってくださいな。
0270デフォルトの名無しさん2008/11/15(土) 09:18:21
267ですが、あるフォルダに画像データ○○000.cif〜○○100.cifが入っており、
一つ一つ呼び出してある処理をかけたいのです。
画像のファイルネームを渡せばその画像を読み込んでくれる関数はあるのですが、
100個もファイルネームを用意するのは面倒です。
for文とかの繰り返し文の処理でなんとかならないでしょうか?
0271デフォルトの名無しさん2008/11/15(土) 10:24:30
フォルダ内にあるファイルを全部読み込む処理を書く。
ファイル形式でフィルタして必要なファイルだけ抽出。
あとは好きなだけ処理すればよし。
0272デフォルトの名無しさん2008/11/15(土) 11:14:07
shellから呼べば
0273デフォルトの名無しさん2008/11/15(土) 12:34:02
>>270
数字以外の部分が同じならsprintfでファイル名を作成できる
for (i = 0; i <= 100; i++)
{
sprintf(filename, "xxx%03d.cif", i);
// 処理
}
0274デフォルトの名無しさん2008/11/15(土) 20:12:37
>>273
なるほど〜ありがとうございます!
0275デフォルトの名無しさん2008/11/17(月) 03:17:55
カメラとパンチルト台(PCで方向制御できるカメラ台)を使って
動く物体をカメラが自動追跡する
監視カメラのような機械を作っています。

処理の流れとしては
1.カメラ画像を解析して追跡対象の位置、速度を計算
2.上の結果に基づきパンチルト台の方向、角速度を決める
の二つを以下のようにwhile文で交互に連続で行い追跡しました。
while(loop){
      画像解析
      パンチルト台の操作
      }
しかしこの方法だと画像解析の間はパンチルトができず、
パンチルト台が動いている間は画像解析が止まり、
ゆっくり動く物体はともかく高速で動く物体は追跡できません。

カメラ、パンチルト台共にc++で制御できる環境になっています。
二つの動作をそれぞれ独立かつ同時に行いながら連絡し合う、
この場合は画像解析と台の操作を
別々に二つのwhile文で同時に処理しながら、
片方からもう片方のwhileの文の中へ値を渡すような、
そんな方法って何かないでしょうか?
0276デフォルトの名無しさん2008/11/17(月) 03:22:14
どういう環境か知らないけど、とりあえずマルチスレッド。
0277デフォルトの名無しさん2008/11/17(月) 03:33:09
>>276
ありがとうございます。
初めて知ったので早速勉強してみます。
ちなみにVisualStudio2005を使っています。
0278デフォルトの名無しさん2008/11/17(月) 03:37:58
その機械に興味があるわw
Wiiリモコン+センサーバーを使った遊びみたいでイイネ
0279デフォルトの名無しさん2008/11/17(月) 03:57:11
>>278
確かにちょっとしたおもちゃを作っているような感じでやってます。
私は追跡が精一杯ですが、どっかの大学には
この技術のすごいやつ+ロボット制御で
飛んできたボールをバットで打ち返すロボットがいるそうです。
いつか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コントロールを作るといい、と前に別スレで教わったのですが、
ローカル資産にブラウザからアクセスするのがセキュリティ上好ましくないからか、資料が見つかりませんでした。

そういうサイト、あるいは本でもいいので、もしあれば教えてください。
02812802008/11/17(月) 13:11:21
環境書き忘れました。
Visual Studio 2008 Professional Editionで、OSはXP HomeとVista Businessです。
IEは6以上と考えています。
0282りょ2008/11/17(月) 15:08:35
onClick="editEmployeeInfo"(<bean:write name="searchList" property="employee_id"/>)

これで社員Idを送ってるらしいんだけど、
これを自分のとこのページでこの社員IDをキーにデータを取得するのはどうやるんですか?
0283デフォルトの名無しさん2008/11/17(月) 15:22:35
それはC/C++の質問なのか?
0284デフォルトの名無しさん2008/11/17(月) 16:46:32
C言語(C++に非ず)の質問です。
関数ポインタの書き方を教えて下さい。

やりたいのは
・構造体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
// main.c
#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
>>285
関数型をtypedefしてしまえば普通に書けるべ。

typedef R * func_t(A * a, B * b, C * c);

typedef struct S {
func_t * func;
} S;
0287デフォルトの名無しさん2008/11/17(月) 17:09:44
>286
typedef の行で
error: syntax error before '*' token
warning: data definition has no type or storage class

と出ます…
0288デフォルトの名無しさん2008/11/17(月) 17:13:12
typedef R (* func_t)(A * a, B * b, C * c);

こうでしょ。RやA,B,Cは定義済みのやつにかえてるよね?
0289デフォルトの名無しさん2008/11/17(月) 17:13:40
まさかとは思うが、Rの宣言はその行より前にあるだろうね。
0290デフォルトの名無しさん2008/11/17(月) 17:18:04
>>288
構造体Rのポインタを返すのだから、>286でいい筈でしょ。
0291デフォルトの名無しさん2008/11/17(月) 17:19:25
>289
0292デフォルトの名無しさん2008/11/17(月) 17:20:24
だったらtypedef R* (* func_t)(A * a, B * b, C * c);だろ
関数ポインタ知らないで書いてたのか。
>func_t * func;
こういう書き方もしてるしな
0293デフォルトの名無しさん2008/11/17(月) 17:21:05
>289
それでした…

あれ?何でできなかったんだろう…
func_t の戻り値型が int だとどうなりますか?
0294デフォルトの名無しさん2008/11/17(月) 17:25:26
>292
関数ポインタの概念は解るんですが、書き方がどうも覚えられなくて
解説通りの関数ポインタをちょっとアレンジしようとすると
文法エラーが出て「あ、あれ???」となることが多いのです…
0295デフォルトの名無しさん2008/11/17(月) 17:35:07
>>280
ActiveX自体が下火だから資料探しは難しいな。
ATL COMプログラミングって本が多少はお勧めだけど、
IE上で動くActiveXコントロール限定の話じゃないからその点注意。

Web上のサンプルとかも拾いつつ、とりあえず動き始めればもう一息。
信頼済みに入っていればLoadLibraryなんかも使い放題だと思う。
0296デフォルトの名無しさん2008/11/17(月) 17:52:06
あー…ちょっと解ったような…
>292 さんのが多分私の思ってたR型へのポインタを返すもので
>288 さんのがRの実体を返すタイプ、
私が >293 で書いた戻り値型が int の場合は
typedef int (* func_t)(A …以下同文で合ってますか?

…とすると、>286 さんのは…???
0297デフォルトの名無しさん2008/11/17(月) 18:00:08
処理系でちょっと書き方変わってくるので、コンパイル通った方が正解。
0298デフォルトの名無しさん2008/11/17(月) 18:10:36
>>297
処理系の問題じゃなくて、関数へのポインタをtypedefするか、関数そのものをtypedefするかの違い。

typdef R* (*func_ptr)(A*, B*, C*); // 関数へのポインタのtypedef
typdef R* func(A*, B*, C*); // 関数のtypedef

struct X {
func_ptr f1; // 関数へのポインタの場合は、* が要らない。
func* f2; // 関数のtypdefの場合は、*が要る。
};
0299デフォルトの名無しさん2008/11/17(月) 18:11:57
>286だけど、Rへのポインタを返す関数型としてfunc_tをtypedefしているよ。
つまり、>292には想像もできなかったらしいけど、typedefしているものが>292とは違うということ。
ちゃんと、>286には「関数型をtypedef」って書いてあるんだけどねぇ。
0300デフォルトの名無しさん2008/11/17(月) 18:16:21
関数型をtypedefしておくと、プロトタイプ宣言を横着できるから面白い。
>298の例なら、func func1, func2;で済んでしまう。
# 却って混乱しそうなのでお勧めはしない。
0301デフォルトの名無しさん2008/11/17(月) 23:02:50
構造体のメンバを参照するとき
ドット . とアロー演算子->の違いはなんでしょうか?
0302デフォルトの名無しさん2008/11/17(月) 23:05:02
>>301
x->b はつまり ()
0303デフォルトの名無しさん2008/11/17(月) 23:05:42
x->b は (*x).b
03042802008/11/17(月) 23:09:02
>>295
本当にありがとう。
ActiveXが下火ってことは、別の技術で同じことが実現できるようになったからなんでしょうか。
その本なら見かけたことあるんで、買ってきます。
0305デフォルトの名無しさん2008/11/18(火) 00:26:05
>>304
オープンなインターネットにおいて、Windows/IE限定の技術だったし、
セキュリティもあまりよくない状況にしやすいというのがダメだった。

後継の決定打はない。
Webブラウザで動かすならAjax、Flash、Silverlightのようにローカルリソースを諦めるか、
ローカルリソースを使いたいならClickOnceなんかのように
アプリケーションをインストールさせるという方向に分かれている感じだと自分は思っている。
0306デフォルトの名無しさん2008/11/18(火) 23:59:08
Tidy使ってHTML->XHTML変換したいんだがやり方が全然わかんね
utf8な文字列を投げてコンソールに出力したときに日本語部分が全部????になる
tidyOptSetValue(tdoc, TidyOutCharEncoding, "shiftjis");やらやってみたけど全然だめ
誰か助けてくれ

ttp://tidy.sourceforge.net/docs/api/
ドキュメントわからなさすぎ 関数名書いてあるだけとか泣いちゃうから
0307デフォルトの名無しさん2008/11/20(木) 05:56:28
変数xのlogを返したいのですがどう書けばいいのでしょうか?
(log xやln xを得たい)
0308デフォルトの名無しさん2008/11/20(木) 08:50:26
>>307
Cならlog()またはlog10()。
0309デフォルトの名無しさん2008/11/20(木) 17:32:09
あまりに的外れなこと聞いてたらすみません
Cの入門書って黙って書いておけ的な感じで#include <stdio.h>の一文がありますよね
同様にC++の入門書では#include <iostream>とありました
しかしVC++を使ってる限りCにC++の文、C++にCの文を書いても互換性があったり混同しても問題なかったりしているのですが
少しでも混同する場合は↑のお約束文?は2つとも書いておくべきなのでしょうか?それとも片方でよいのでしょうか?
0310デフォルトの名無しさん2008/11/20(木) 17:53:08
使うものは書く必要がある
使わないものは別に書いても書かなくても構わないが、まぁ無駄なだけだ
printf, scanf 等は <stdio.h>
cout 等は <iostream>
使いたい関数のリファレンスマニュアルを見れば、必要なヘッダファイルが書いてある
0311デフォルトの名無しさん2008/11/20(木) 18:01:49
CにC++の文を書いたりCでC++のヘッダファイルを使うことはできないよ
VC++のデフォルトのプロジェクト設定では拡張子を .c にしてもC++としてコンパイルされるから
問題ないように見えてしまうかもしれないが
0312デフォルトの名無しさん2008/11/20(木) 21:28:21
__FUNCTION__ って VC++ だけ?
gcc でもつかえる?
0313デフォルトの名無しさん2008/11/20(木) 21:55:03
質問です

while (true)
{
if(a = b)
{
//何かの処理A
continue;
}
//何かの処理B
}
この場合、a=bだとすると処理Aが行われますが、その後の処理Bは行われますか?
0314デフォルトの名無しさん2008/11/20(木) 22:01:44
どっちも試せば一発でわかることなのに。。。

>>312
使える

>>313
実行されない
というか、そのための continue
0315デフォルトの名無しさん2008/11/20(木) 22:32:56
>313
そのコードだと、まず a に b が代入され
b が真なら処理Aが実行される。

もし = が == なら、a と b が等しいとき処理Aが実行される。

どちらにしろ、処理Aが実行されたら
continueでループ内のそれ以下の処理は飛ばされ
処理Bは行われない。
0316デフォルトの名無しさん2008/11/20(木) 22:53:17
>309
#include プログラム内でどんな機能を使うかを示すもの。
(もっと正確に言えばプリプロセサへの指示)

例えばC言語の printf scanf などは stdio に
C++の std::cout std::endl などは iostream に所属してる。

もっと色んな機能を使いたければ沢山 #include を書くことになる。
但しコンパイルは重くなるし、変数名も関数名も大量になって
好きな名前を付けにくくなる。

「お約束」と言われるのはよく使われる機能が詰まってるから。
stdio も iostream も無しでウィンドウ制御やグラフィックス機能だけincludeしたり
プラグインやライブラリなどはそれすら要らないこともある。


ちなみにC++は少し前のC言語を拡張して作られた言語。
なのでC言語のコードはC++コンパイラでもコンパイルできる事が多いけど
逆にC++のコードはC言語のコンパイラではコンパイル出来ないのが普通
0317デフォルトの名無しさん2008/11/20(木) 23:31:17
>ちなみにC++は少し前のC言語を拡張して作られた言語。
>なのでC言語のコードはC++コンパイラでもコンパイルできる事が多いけど
よく判っていないのなら書かなければいいのに。
0318デフォルトの名無しさん2008/11/21(金) 00:41:12
拡張の過程で仕様変更もあったけど
そんなの気にしてるとハゲるぞ。
■ このスレッドは過去ログ倉庫に格納されています