[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/28 11:42 / Filesize : 246 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.45【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 14:09:22 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.44【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1194016813/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

183 名前:180 mailto:sage [2007/12/11(火) 14:08:12 ]
ごめん間違えた忘れて

184 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:08:32 ]
あらかじめresizeしてから格納すればよいのでは?

185 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:10:06 ]
リサイズで領域確保すればバイナリで読み込めますか?

186 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:12:11 ]
試せ

187 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:14:06 ]
速度を気にしてるようだけど、実測した上で言ってるの?
そもそもデータ構造はvector<string>でいいの?
要求を満たす代替案は考えてないの?

188 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:15:57 ]
質問をまとめるとですね・・・
string型を直接ディスクに書き込んだり直接読んだり出来るかという事です

189 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:21:56 ]
>>188
「直接」が曖昧

string s;
ofstream f(filename);
f << s;

fwrite(&s, sizeof(string), 1, fp);

190 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:23:43 ]
>>189
その方法で読み書き出来るんですか?試してみます
stringは読み込むときにresizeしておかなくても読み込めるんですか?
確保していないところに書き込まれないですか?

191 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:24:31 ]
>>188
boost::serialization



192 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:30:45 ]
サンクス 出来ました
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

main(){
string s="this a pan.", t;
fstream fp;
fp.open("stringdat", ios::out | ios::binary );
fp.write( (char*) &s, sizeof(s));
fp.close();

fp.open("stringdat", ios::in | ios::binary );
fp.read( (char*) &t, sizeof(s));;
fp.close();
cout<<t;}

193 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:32:32 ]
string sを長くしたら表示中にエラーが出ました やはり確保しておかないと駄目ですか

194 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:36:48 ]
ありがとうございました 確保しておいたらエラー出ませんでした 

195 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:39:32 ]
>>192
これは良いコードw

196 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:50:57 ]
でも確保するサイズがなぜか2倍以下だとエラーになります なんか不安定だしメモリ食うので安全にcharにしようと思います

197 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:55:50 ]
YUV422に関して、ど素人なのですが
再生用YUV422のサンプルファイルと、
再生用サンプルプログラム等を
ダウンロード出来るサイトご存じの方いませんでしょうか?

198 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:59:22 ]
>>192
うわぁ…

199 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 15:17:07 ]
すみません
vector<string>なんですけど、既に10Mバイトくらい使用していたとして、確保されている領域も無いとき
新たにstring型を追加するときは、別の空き領域を探してきて元のデータをコピーするんでしょうか? 手間かかりますよね?
また、vector<string> str;
str.resize(100000);
と十分に確保してあれば各str[n]がどんなにメモリ食っても再配置されませんか?

200 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 15:18:39 ]
再配置されているかどうか調べるにはどうすればいいですか? 意図的に再配置を起こさせるような実験プログラムは判りますか?

201 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 15:31:39 ]
>>199
きっと意図しているのは str.reserve() なのではないかと思うけど、ふ
つうの実装だったらたくさんリザーブしておけばそこまでは再配置され
ないんじゃないかねえ。規格は手元にないので知らない。

メモリへの要件が厳しいようなら、自分で vector 相当のものを書いた
ほうが柔軟に対応できるかもしれない。





202 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 15:43:51 ]
int main(){
void *p[10000];
string str;
str="This is a pan.";
p[0]=&str;
cout<< *((string*)(p[0]));
}

とやれば出来ますけど、サブルーチンでstringを追加するにはstatic 付けたらいいですか?
newで確保してもメモリから消えないんですけど値はつねに保証されますか?

203 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 15:46:45 ]
自前で作るならstring使わないでchar配列を動的確保した方が安定しそうですね 
でもサブルーチンで確保しても値は保証されますか?

204 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 15:49:12 ]
そもそも、メンバ関数を初期化という概念がどこから来たのか知りたいぜ。

205 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 15:54:00 ]
>>202の場合、pを引数で渡しても、strは消滅の可能性がありますよね だから読み込めない場合がありますよね
staticやnewで確保すればpを引数にしてデータアクセスはつねにできますか

206 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 15:57:34 ]
>>199
全体のデータサイズよりも、文字列の個数によって方法論が決まってくるんじゃないかな。

stringの実装には色んなやり方があるけど、いずれの場合も、サイズの大きな中身はポインタで持ってる。
だから、10MB使用している状態でvectorが要素を再配置したからといって、その10MBのすべてが
せっせと大移動を繰り広げるわけではない。
たとえばvector<string>の要素数が10で、それぞれのstringサイズが1MB、合計10MBのとき、
そのあとpush_back()で再配置が起きても、移動するのは「string型そのもの」だけ。
string型自体のサイズは、せいぜい数バイトから多くても20バイト台で、これが10個コピーされるだけってことになる。

でも、「平均10バイトの文字列が100万個で10MB」となると、これの再配置は確かにコストが高いわけで、
つまりこの辺は、君がイジろうとしているデータの性質次第で、アプローチが変わってくる部分だと思う。

207 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 16:03:23 ]
>>206 ありがとう

208 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 16:09:55 ]
>>202,203,205
どうも基本的なC++の知識が欠如しているように見えますよ。C++の入門
書を一冊読んでみたらいかが? メモリ効率を気にするのはまだ早いんじゃ
ない?

もちろん、
void add_item(string** array, int capacity, int size) {
if (size >= capacity) return;
string str = "...";
array[size++] = &str;
}
という風にすると、array[]に入れた値は関数から抜けた時点で無効です。
static にしたら汎用性がなくなりそうなので、new でしょうね。


209 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 18:28:51 ]
>>206
>>stringの実装には色んなやり方があるけど、いずれの場合も、サイズの大きな中身はポインタで持ってる。
>>だから、10MB使用している状態でvectorが要素を再配置したからといって、その10MBのすべてが
>>せっせと大移動を繰り広げるわけではない。
では、vector型データの参照渡しは無意味ってこと?
例えば
vector<int>& Foo(){ return hoge; }; //@
vector<int> Foo(){ return hoge; }; //A
この場合、@もAも関数を引き渡すコストは同じなの?


210 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 18:37:26 ]
お前は何を言ってるんだ

211 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 18:40:16 ]
>206
でもさ、vectorの再配置は、コピーコンストラクタで行うんだから、
stringの性質によっては、どっちも10MBすべて大移動になるでそ?
特に最近は、スレッドの絡みで、COWしないのが流行りだし。



212 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 19:25:24 ]
なんか話が噛み合ってないおかーん

213 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 19:58:08 ]
rope使えよ

214 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 21:42:35 ]
struct point{int x,y;};
を<algonithm>でソートしたいんですが、
キーがxの順とyの順を切り替えて使いたいです
切り替えないなら
bool operator< (const node& left, const node& right){return (left.x
< right.x);}
でいいんですが、切り替える時はどういう風にオペレータを定義すればいいんでしょうか?
どちらの順にするかは各クラスによって決まっているので出来ればメンバ関数化したいです
環境はg++です

215 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 21:51:05 ]
x, yそれぞれの比較関数作ってsortに渡せばいいじゃん

216 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:04:16 ]
>>215
クラス内に書くと
operator<(const point&, const point&)' must take exactly one argument
と怒られるので仕方なくグローバル関数にしています、
上と同じ内容のオペレータをメンバ関数にするにはどうしたらいいのかサッパリでorz

217 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:08:54 ]
bool operator < (const point& rhs) { return (this->x < rhs.x); }

218 名前:デフォルトの名無しさん [2007/12/11(火) 22:50:00 ]
age

219 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 23:37:46 ]
>>217
'class Hoge' has no member named 'x'
オペレータ全然わかんねorz

220 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 23:41:39 ]
pointをメンバで持ってるクラスについて、そのpointで比較したいなら、
当然、rhsの型をそのクラスにして、比較したいpoint型のメンバ変数名を
差し挟まなくちゃあいけませんよ。

221 名前:デフォルトの名無しさん [2007/12/12(水) 00:12:25 ]
現在、60kbyte分のメモリをmallocしてmemsetで60kbyteのサイズ分文字を格納しています。
これを、ソケット通信すると、MTUごとにフラグメント化され60kbyteの一つのデータとして
ではなく、MTUサイズ分の複数の異なるデータになってしまいます。
(途中の経路でパケットキャプチャしてオフセットフラグを確認しすべて0だった)

そこで、60kbyteのデータを一つのデータとして作成する方法を教えていただけませんか?





222 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:14:03 ]
TCPは?

223 名前:221 mailto:sage [2007/12/12(水) 00:22:01 ]
>>222
TCP通信かUDP通信かってことですか?
TCP通信でオプション等は何も設定していません。
質問の意図を取り違えていたらすみません。

224 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:47:36 ]
64bit毎のlongの配列のデータを12bit毎に処理をして64bitの配列に戻したいのですが、
どのようにすればいいでしょうか?
環境は、windowsでcygwinのgccのC++です。

配列の数は上から与えられます。12bit毎にデータの加工をして上に返します。
一応、途中まで考えたのですが、力技しか思いつかず、凄く長くなってしまいます。
関数は以下のような形です。
bool CLASS::exe(std::vector<signed long>&din, std::vector<signed long>&dout)
{
long in_data[3];
int data_12b[16];
long size = din.size();

for(int i=0; i<size; i+=3){
data[0] = din[i];
data[1] = din[i+1];
data[2] = din[i]+2;

// ここで12bitのデータにする

// ここで12bitのデータの処理

// ここでlong3つの変数に入れる
}

225 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:57:22 ]
なんで12bitなんだろう
力業しかないんじゃない?

226 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:04:43 ]
>>224
signed だとシフトが安全に使えないから無理な予感。符号はどうなってんの?

227 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:06:41 ]
>>216
なんでメンバ関数にしたいの?関連のあるコードだからってことなら static メンバ関数に
すればよさそうだけど。

228 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:21:38 ]
>>225
よく分からないのですが、16ビット×16コのデータをまいびいて圧縮して、
12ビット×16コにしてるみたいです。
力技だと
data_12b[0] = (data[0] >> 52) & 0x0FFF;
data_12b[1] = (data[0] >> 40) & 0x0FFF;
・・・
みたいな感じになるんでしょうか?

>>226
12bitのデータに符号はないです。なので符号のbitは符号として使ってません。
関数の呼び出し部分はunsignedにできるのでそっちにしてみます。

229 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:34:13 ]

12bit + パディング4bt × 16コ にしてもらえ

230 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:49:20 ]
>>229
天才現る!その考えはなかったわ。
うん、そうしよう。
ありがとうございました。

231 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 02:30:00 ]
すいませんCの質問かどうか微妙なんですが、
同じ数字を繰り返す式例えば
while(){
int num++;
a = num % 3;
}であれば012012012とaの値が変化しますよね、
これと別に0121012101210って感じで変化する数字を作り出すやり方ってありますかね?



232 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 02:34:06 ]
>>231
3行目、aじゃなくてnumな。あとnumのスコープが狭すぎ。

int num=0;
static int array[] = { 0, 1, 2, 1 };
while() {
int a = array[ num ];
num = ( num + 1 ) % 4;
}

テーブルで変換とかどう?
1の次が0になる場合と2になる場合があるから単純なステートマシンじゃ無理かと。


233 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 02:39:43 ]
>>232

なるほど。おっしゃるとおりテーブル使ったほうがよさげですね。
実はこれ今作ってるゲームのアニメパターンの変化部分で使うんですよ。
グラデーションみたいなアニメなんで012012みたいな循環数字(?)じゃ気に入らなくて、、、

ありがとでした!!

234 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 02:53:15 ]
>>221
TCPなら順序制御があるけど、何が問題なの?
少なくともトランスポート層以上では正しい
データになってるだろ。
アプリ層で60kByte取得するまで待てばいいんでは?


235 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 02:58:13 ]
>>233
三角関数使うといいんじゃね?

236 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 03:39:42 ]
int main(){

const int C = 100;
const double PI=3.1415f;
const double K = 10.0f;

double i=0.0f;

for(int r =0;r<C;r++){
double t=0;

for(double x=1.0f;x<K ; x=x+1.0f){
t = t + sin((x* PI )/2.0f ) * (sin( x * i))/(x*x);
}
cout << static_cast<int>(round(fabs(t*(8.0f/(PI*PI))) * 2)) << endl;;

r%4==0 ? i=0.0f:i=i+PI/4.0f;
}



return 0;
}

237 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 05:07:14 ]
>>224
どうしてunion使わないの?

238 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 07:25:38 ]
struct Foo {
double value;
char *name;
};

int main (int argc, char *argv[]){

int i;
for(i = 1;i < argc; i = i + 2)
struct Foo test[i] = {atof(argv[i]), argv[1+i]};

とやると、
.c:13: error: parse error before 'struct'
.c:17: error: 'test' undeclared (first use in this function)
.c:17: error: (Each undeclared identifier is reported only once
.c:17: error: for each function it appears in.)

ってコンパイルエラーが出てコンパイルできないんですけれど、
どうやれば構造体を宣言できるのか分からないので教えていただけないでしょうか?

239 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 07:44:39 ]
>>238

for(i = 1;i < argc; i = i + 2)
struct Foo test[i] = {atof(argv[i]), argv[1+i]};

↑こんなことできん。
いったい何をしたいんだ?



240 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:10:40 ]
>>239
できないんですか〜。
残念。
正確にやりたいことを書くと、引数に「100,りんご,200,みかん,150,バナナ」みたいなものがあります。
でも引数の数は「100,りんご,200,みかん」かもしれないし、「100,りんご」かもしれないし、もしかしたら引数がないかもしれません、
で、まず構造体を作って、
struct Foo {
double value;
char *name;
};

int i;
for(i = 1;i < argc; i = i + 2)
struct Foo test[i/0] = {atof(argv[i]), argv[1+i]};

ってできないかなぁと思って。

241 名前:240 mailto:sage [2007/12/12(水) 08:12:12 ]
struct Foo test[i/2] = {atof(argv[i]), argv[1+i]};
の間違いです。



242 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 10:06:49 ]
>>236
それはやりすぎwww

243 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 10:31:57 ]
i/0ってw

244 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 10:44:43 ]
>>224
要素が12bitのように振舞うvector<signed long>のラッパー
vector<signed long>に12bitずつ格納するラッパー
イテレータも実装すればいろいろ応用できるだろう

245 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 11:12:50 ]
>>240
造体の要素ごとに入れていくか、
コンストラクタつきの構造体(クラス)にして、引数にするとかじゃね?
っていうか、やりたい事を見ると、簡単な構文解析が必要なんじゃね?



246 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 11:51:50 ]
>>221
MTU (最大転送単位)なんだから、MTUより大きなパケットは使えません。
なんで分割されると困るの?


247 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 13:23:24 ]
if(!a)printf("hello world");
だとaが偽(0の時)の時printfを実行するという意味でしょうか


248 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 13:31:10 ]
そうですよ。

249 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 13:34:02 ]
>>247の質問をエスパーするとだな

真が0以外なのに正常終了が0なのはどうしてですか

ってことだと思う

250 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 13:42:26 ]
#include <vector>
#include <sstream>
#include <algorithm>
struct Foo {
double value;
std::string name;
};
int main (int argc, char *argv[]){
{
std::vector<Foo> FooArray;
if (argc > 1) {
std::vector<char> str(argv[1], argv[1] + strlen(argv[1]) + 1);
std::replace(str.begin(), str.end(), ',', ' ');
std::stringstream buf(&str[0]);
Foo data;
while (buf >> data.value >> data.name)
FooArray.push_back(data);
}
return 0;
}

251 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 13:44:05 ]
>>250>>240へのレスね。ちなみにマルチバイト文字列だとバグるかも



252 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 13:50:44 ]
>>250
240 を見る限り、実際にカンマ区切りのテキストを入力するわけじゃなくて
argv に2つずつ並んでるみたいだよ。そんなめんどくさいことしなくていいみたい。

253 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 14:01:09 ]
#include <vector>
#include <string>

int main(int argc, char ** argv)
{
struct valname {
double value;
std::string name;
};
std::vector<valname> valnames;
for (int ic = 1; ic < argc; ic += 2) {
valname data = {atof(argv[ic]), argv[ic + 1]};
valnames.push_back(data);
}
for (std::vector<valname>::const_iterator it = valnames.begin(); it != valnames.end(); ++it) {
std::cout << it->value << ' ' << it->name << '\n';
}
return 0;
}

254 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:08:21 ]
ポインタ配列は、一つ当たり32bit使いますか?


255 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:12:56 ]
>>254
環境によります。
printf("%u\n", sizeof(void *))とでもしてバイト数を割り出してみてください。
大抵の環境では、その8倍がビット数になります。

256 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:14:39 ]
サンクス

257 名前:デフォルトの名無しさん [2007/12/12(水) 15:29:40 ]
int ch;
while((ch=getchar())!=EOF){
if(if(isalpha(ch)) analysis(ch);
}

ってなってるところで11Fってやったらanalysis(ch)に11回Fをいれるようにしたいんですどどうすればいいですか?
analysis(ch)は他の関数です。

258 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:38:14 ]
>>257
ループの外で count という変数を宣言して、0で初期化
ループの中で、isdigit() だったら count = count * 10 + ch-'0'
analysis() を呼ぶところで、count の回数だけ繰り返し


259 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:39:51 ]
>>257
日本語とCでOK。

260 名前:デフォルトの名無しさん [2007/12/12(水) 16:09:33 ]
>>258
有難うございます、やってみます。

261 名前:デフォルトの名無しさん [2007/12/12(水) 16:59:20 ]
const int num = 5;
int a[num];

って、C++では、配列を宣言ってできるの?
これが出来たら、配列が動的に宣言できちゃうことにならない?



262 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:02:34 ]
>>261
numはコンパイル時に確定しているから静的でないといけないC++でも問題ない。
Cの場合は、ローカル変数なら同じ方法で動的に宣言できる。

263 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:45:57 ]
>>261
const は動的に書き換えられないので問題ない。

264 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:46:57 ]
>>262
それはC99だろ

265 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:49:24 ]
>>263
でも、変数の初期化時に動的な値で初期化できないかい?

const int num = f();

みたいな感じで

266 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:59:55 ]
>>265
やってみろ。話はそれからだ。

>>264
C99はCではないとでも?

267 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:29:48 ]
>>266
C99はCの一つ。だから、Cの場合は云々行った場合、
それがC99だろうと、C89だろうとかまわない内容でないとまずいだろ。

ちゃんとC99である事を明記するべきだといっているんだ

268 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:42:03 ]
なに、じゃあいまさらK&R形式でやれと?
構造体の直接代入は禁止かい?

269 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:53:47 ]
頭の悪い絡み方だが、本人的には鋭い突き上げなんだろうね。

270 名前:266 mailto:sage [2007/12/12(水) 20:19:43 ]
いや、>268は私じゃないし。

271 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:21:03 ]
いまの32bitx86用商用コンパイラってだいたいC++コンパイラだろ
C99をサポートした上記用Cコンパイラって何かある?



272 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:27:39 ]
取り敢えず、icc, sun studioはc99だね。

273 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:52:11 ]
そもそも32bit x86用商用コンパイラ、というカテゴリそのものがアレだなー。

274 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:26:35 ]
まぁC99、あんま流行ってないしな。

275 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:02:47 ]
>>274
まーね、C++のCの部分だけで十分なんだけどって感じかな。
俺としては、C99サポートよりC++TR1のサポートを要求するって感じだ。

>>272
やっぱ、銭にならん、あるいは、対応要求が強くないからかなサポートしないってことかな。


276 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:07:35 ]
というか、「いまの32bitx86商用Cコンパイラ」をC99対応に関わらず
列挙してみろってば。

277 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:19:19 ]
ググレカス

278 名前:デフォルトの名無しさん [2007/12/12(水) 22:49:57 ]
C++で typedef は何の為にあるんでしょうか。
自己満足以外の使い方を教えてください。

279 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:54:20 ]
移植性と書きやすさ

280 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:06:02 ]
>>275
>まーね、C++のCの部分だけで十分なんだけどって感じかな。
つーか、C89から使ってる人間からすると、C99でどうしても欲しい機能って無いのよ。
むしろC99に対応するより、ISOやらJISやらにC89の規格を閲覧出来るようにしろと要求したい。

281 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:11:36 ]
>>278
traitsの表現
というか自己満足してるのはお前だけ



282 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:27:42 ]
typedef無かったらめっちゃ不便やん?
テンプレート使うときとか後で変更される可能性のある型使うときとか

283 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:31:06 BE:335659853-2BP(35)]
コードコンプリート第2版とModernC++Designまじおすすめ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef