[表示 : 全て 最新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

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まじおすすめ

284 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:13:25 ]
VCのうにコードな時、TEXT("もじれつ")でWSTR[]が作れるけど、
文字からWCHARを作るにはどうすればいいの?

285 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:24:05 ]
おまえらC#も使えるよな?

286 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:24:24 ]
TEXT('も');
_T('じ');

287 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:35:32 ]
VCのうにコードな時、TEXT("もじれつ")でWSTR[]が作れるけど、

いや無理だろ

288 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:45:21 ]
>>284
C/C++言語で文字列をどうこう言う前に、自然言語で正しい(意味が伝わる)文字列を
扱えるようにするのが先だとは思わないかね?

289 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:15:14 ]
vector配列の解放はどうやるんですか? resizeとかで縮めるしかないですか

290 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:17:53 ]
自己解決しました clear();というのがありました

291 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:25:20 ]
だめだ
解放されていない

292 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:26:46 ]
reserve(0);でも解放されないよ どうしたら良いんですか



293 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:30:50 ]
vectorの解放ってあんましピンとこないなー。

std::vector<T>( hoge ).swap( hoge )
でシュリンクできる、ってEffectiveSTLにあったけど、
そういう話?

294 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:34:25 ]
解放できましたよ 標準でついてないのが良くないですね
main(){
int n;
vector<double> a(10000000,1);
vector<double>().swap(a);
scanf("%d",&n);
}


295 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:37:39 ]
>>293
作業領域でたとえば100M使っていたとして、そのあとにもプログラムが続く場合
作業領域は消したいですよね 多分サブルーチンで確保したものは戻るときに消えていると思うのですが
そうでないと消したいわけなんですが・・標準でついてないです

296 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:44:52 ]
そういう意味なら、スコープ抜けたら消えるでしょ。
vectorの定義から消したい場所までをブロックで囲めば。

297 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:47:29 ]
万能解放命令できたよ

template<typename T>
void clear(T& t){ T().swap(t);}

main(){
int n;
string a; a.resize(100000000);
clear(a);

vector<double> b(10000000,1);
clear(b);
scanf("%d",&n);}

298 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:50:30 ]
>>296
実験してみました ちゃんと解放しますね 勉強になりました

main(){
{vector<double> b(10000000,1); Sleep(1000);}
int n; scanf("%d",&n);
}

299 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:00:26 ]
でも有効範囲を括弧で括るのは紛らわしいですね 他にも適用範囲の別の物がまじっていたら困ります
明示的に解放するほうが良さそうですね 


300 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:00:51 ]
vcはclearで解放しなかったかな

301 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:23:11 ]
C99の複合リテラルに対応しているコンパイラって何がありますか?

302 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:40:38 ]
gccって更新はやいんじやないの?



303 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 00:36:56 ]
>>299
まともにスコープ切ってれば明示的な解放(ブロック作成)が要るようになることなんて
無いと思うよ。そうとう特殊な場合でしょ。

304 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:17:40 ]
ImpersonateLoggedOnUser関数による偽装ログオンについて教えてください
アドミン権限で動いてるプログラムのうち、ユーザHOGEに偽装ログオンして
動かしたいA()という関数と、アドミン権限で動かしたいB()という関数があります。

このとき、
LogonUser(..., &hToken);
ImpersonateLoggedOnUser(hToken);
A();
B();
RevertToSelf();
CloseHandle(hToken);
としてしまうと、B()までHOGE権限で動いてしまうと思っています。ので、
LogonUser(..., &hToken);
ImpersonateLoggedOnUser(hToken);  A();  RevertToSelf();
CloseHandle(hToken);
LogonUser(..., &hToken);
ImpersonateLoggedOnUser(hToken);  A();  RevertToSelf();
CloseHandle(hToken);
B();
とするか、
LogonUser(..., &hToken);
ImpersonateLoggedOnUser(hToken);  A();  RevertToSelf();
ImpersonateLoggedOnUser(hToken);  A();  RevertToSelf();
B();
CloseHandle(hToken);
とするかだと思うのですが、A()、B()が何回か繰り返し呼び出されるとき、後者のように
LogonUser()を呼ぶのは一回だけにして、LogonUser()とCloseHandle()の間に複数回の
偽装・偽装解除・A()・B()を呼び出すのは問題ないでしょうか。
多分大丈夫なんじゃとは思うのですが、そういうサンプルコードが見あたらなかったので
決めかねている次第です。どなたか教えていただけると助かります。

305 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 11:44:17 ]
文字列リテラルにスコープってある?

char *func(){
return "Hello,World!!!";
}
てあり?

306 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 11:56:07 ]
>>305
大蟻。
つーか、常套手段。但し、const char *を返すべき。

307 名前:306 mailto:sage [2007/12/14(金) 11:58:04 ]
>>305
書き忘れた。文字列リテラル自体の生存期間はstaticと同じく、プログラム開始時から終了時まで。

308 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 12:47:11 ]
>>306-307
サンクス
そうかconstだったな

309 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 15:35:34 ]
スコープ(名前の有効範囲。コンパイル時にチェックされる)と
寿命(変数を置く場所がその変数のための場所である期間。実行時の話)は
別の話だぞー。

310 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 22:33:52 ]
参考書を見ながら独学でやっているプログラミング初心者です。
どうにもわからないことがあるので質問します。

#include<stdio.h>

int main(void){

int a = 1;
int b = 0;


printf("short int型のサイズは%dバイトです。\n",sizeof(short int));
printf("int型のサイズは%dバイトです。\n",sizeof(int));
printf("long int型のサイズは%dバイトです。\n",sizeof(long int));

printf("float型のサイズは%dバイトです。\n",sizeof(float));
printf("double型のサイズは%dバイトです。\n",sizeof(double));
printf("long double型のサイズは%dバイトです。\n",sizeof(long double));

printf("変数aのサイズは%dバイトです。\n",sizeof(a));
printf("式a+bのサイズは%dバイトです。\n",sizeof(a+b));


return 0;
}

でコンパイルするとlong doublのところが10バイトになるのですが
私の持っている参考書の{やさしいC}では8バイト表記になっています。
何度も見直していますが間違いがわかりませんでした。
よろしくお願いします

311 名前:310 mailto:sage [2007/12/14(金) 22:40:24 ]
動作環境はWinXP
使用コンパイラはCpadというものです。

312 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 22:41:38 ]
型のサイズは環境によって違う。
long double は 8, 10, 16 バイトの3種類くらい見たことがある。



313 名前:310 mailto:sage [2007/12/14(金) 22:57:54 ]
>型のサイズは環境によって違う。
long double は 8, 10, 16 バイトの3種類くらい見たことがある。

環境の違いがあるということも頭に入れて勉強を進めたいと思います。
ありがとうございました。

314 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 23:39:03 ]
GCCとVCくらいしか使わん身としては
10バイトってのは珍しいね






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

前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