スレを勃てるまでもないC/C++の質問はここで 21
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2012/07/15(日) 02:05:11.71過去ログ
01 http://pc11.2ch.net/test/read.cgi/tech/1167476845/
02 http://pc11.2ch.net/test/read.cgi/tech/1178503366/
03 http://pc11.2ch.net/test/read.cgi/tech/1187521676/
04 http://pc11.2ch.net/test/read.cgi/tech/1221633708/
05 http://pc11.2ch.net/test/read.cgi/tech/1230516307/
06 http://pc11.2ch.net/test/read.cgi/tech/1231564903/
07 http://pc11.2ch.net/test/read.cgi/tech/1232983248/
08 http://pc12.2ch.net/test/read.cgi/tech/1235921779/
09 http://pc12.2ch.net/test/read.cgi/tech/1240022781/
10 http://pc12.2ch.net/test/read.cgi/tech/1242300936/
11 http://pc12.2ch.net/test/read.cgi/tech/1245059383/
12 http://pc12.2ch.net/test/read.cgi/tech/1248010352/
13 http://pc12.2ch.net/test/read.cgi/tech/1260842197/
14 http://pc12.2ch.net/test/read.cgi/tech/1269273471/
15 http://pc12.2ch.net/test/read.cgi/tech/1273368706/
16 http://hibari.2ch.net/test/read.cgi/tech/1279285647/
17 http://hibari.2ch.net/test/read.cgi/tech/1285115590/
18 http://hibari.2ch.net/test/read.cgi/tech/1291571263/
19 http://hibari.2ch.net/test/read.cgi/tech/1308106024/
20 http://toro.2ch.net/test/read.cgi/tech/1316013463/
0002デフォルトの名無しさん
2012/07/15(日) 05:19:14.36これは乙じゃなくてポニーテールがうんたら
0003デフォルトの名無しさん
2012/07/19(木) 00:57:39.040004デフォルトの名無しさん
2012/07/21(土) 09:19:51.060005デフォルトの名無しさん
2012/07/21(土) 18:06:16.04くっそー
0006デフォルトの名無しさん
2012/07/22(日) 21:02:02.95入力された引数をトークンに分解するプログラムなのですが、
#define MAXARGS 1024
#define CHUNK 1024
int main(int argc, char *argv[])
{
char **args;
int err;
while ((err = readcmdline(stdin, stdout, &args)) > 0) {
if (strcmp("cd", args[0]) == 0) {
chdir(args[1]);
...
int readcmdline(FILE *i, FILE *o, char ***args)
{
char *prompt = getenv("PS1");
char *buf, *lasts, *token;
int argc;
/* メモリの割当 */
if ((buf = malloc(CHUNK)) = NULL ||
(*args = (char **)malloc(sizeof(char **) * MAXARGS)) == NULL) {
perror("malloc");
exit(1);
}
....
をコンパイルすると、
In function `readcmdline':
invalid lvalue in assignment
と*args = (char **)malloc(sizeof(char **) * MAXARGS)) == NULL
の所で怒られます。
本に書いてあったソースなのですが、そもそも宣言していない*argsに代入する事は可能なのでしょうか?
0007デフォルトの名無しさん
2012/07/22(日) 21:24:20.63* args = ... で代入することは問題がないはず。
問題なのは、その行ではなくてその一つ前の行。
0008デフォルトの名無しさん
2012/07/22(日) 21:53:41.15buf = malloc(CHUNK)) = NULL
を
buf = (char *)malloc(CHUNK)) == NULL
にしたらOKでした。すいません。
教えてほしいんですが、
main関数内で
ポインタのポインタとして、
char **args;を宣言して、
そのアドレスを、
int readcmdline(FILE *i, FILE *o, char ***args)
で受けて、
char ***argsに入っている事は解るんですが、
(*args = (char **)malloc(sizeof(char **) * MAXARGS)
の場合、
*argsは何を示してるんでしょうか?
*argsはどこでもポインタとして宣言していないような気がするんですが...
0009デフォルトの名無しさん
2012/07/22(日) 22:16:48.51ここに書いてるやん
0010デフォルトの名無しさん
2012/07/22(日) 22:37:55.300011デフォルトの名無しさん
2012/07/22(日) 22:42:29.82http://www.nurs.or.jp/~sug/soft/tora/index.htm
あたりを読んで勉強してきます。
0012デフォルトの名無しさん
2012/07/23(月) 18:34:58.440013デフォルトの名無しさん
2012/07/23(月) 19:43:37.38Cのコードを使えるようにするため
001412
2012/07/24(火) 03:10:13.530015デフォルトの名無しさん
2012/07/24(火) 04:30:19.430016デフォルトの名無しさん
2012/07/24(火) 13:20:59.45__int64 bit;
//setbit = 1ull << i;
setbit = 0;
_bittestandset64(&setbit,i);
のアセンブリコード出力が
lea rcx, QWORD PTR setbit$87411[rsp]
mov QWORD PTR setbit$87411[rsp], 0
bts QWORD PTR [rcx], rax
mov rcx, QWORD PTR setbit$87411[rsp]
となるんだが
xor ecx, ecx
bts rcx, rax
となるようなソースコードを教えていただけませんか?
環境はVC2010、ターゲットCPUはSandy Bridgeです。
またiは0〜63の整数です。
放置するかアセンブラで書くしかないのかな
0017デフォルトの名無しさん
2012/07/24(火) 13:26:36.29最適化したらどうなる?
001816
2012/07/24(火) 13:38:32.87すでに最適化(/O2)はかけています。
このコードではiの範囲とsetbitを指すポインタの有無を
コンパイラが分からない事が原因なのではと考えています。
ちょっと逆アセも確認してきます。
001916
2012/07/24(火) 13:47:24.27(インライン展開された関係でレジスタが変わっただけ)
0020デフォルトの名無しさん
2012/07/24(火) 16:18:12.44002116
2012/07/24(火) 22:21:23.72setbit = 1ull << i;
だと
mov ecx, r8d
mov edx, 1
shl rdx, cl
になるのでとりあえずシフトを使うコードにしておいて
別の場所の最適化をしときます
0022デフォルトの名無しさん
2012/07/25(水) 08:39:40.58他にも何かの効果があった気がします。
以下のような効果があるかどうか教えてください。
・関数のアドレスが固定になる?ので関数呼び出しが高速化される
・関数内の自動変数も固定アドレスになる?(int a;がstatic int a;になる?)
以上について教えてください。
0023デフォルトの名無しさん
2012/07/25(水) 09:21:25.07関数の所在は元々固定的なので、呼び出しが高速になるわけではありません。
但し、コンパイラによっては静的関数のみ、インライン展開するので効果がないというわけでもありません。
また、自動変数は意味的に呼び出しごとに別のものでなければならないので静的関数ないであろうと静的にはなりません。
0024デフォルトの名無しさん
2012/07/25(水) 15:54:41.770025デフォルトの名無しさん
2012/08/05(日) 10:57:58.16PeekMessageを呼んだときに、他のウィンドウのWNDPROCも
呼ばれてしまうようです。
他のウィンドウや他のメッセージを全く処理したくないわけではないので
他のウィンドウのWNDPROCを何もせずに抜けるのはNGです。
キー・マウスやペイントを優先的に処理したいだけです。
他のウィンドウのWNDPROCを呼ばずに自分の選んだメッセージだけ
処理する方法はありませんか?
Windows XP、Visual C++ 2010 Expressです。
0026デフォルトの名無しさん
2012/08/05(日) 11:20:49.61ttp://msdn.microsoft.com/ja-jp/library/cc410948.aspx
他のウィンドウのWNDPROCも呼ばれてしまうようです。の意味がわからない
PeekMessageはあくまでスレッドに関連付けられたメッセージキューからメッセージを取ってくるだけ
メッセージのディスパッチはしない
002725
2012/08/06(月) 08:59:38.271: user32.dll!77cf8734()
2: user32.dll!77cf8816()
3: user32.dll!77d08ea0()
4: user32.dll!77d08eec()
5: ntdll.dll!7c94e473()
6: user32.dll!77cf93e9()
7: user32.dll!77cf93a8()
8: user32.dll!77cf9402()
9: hoge.dll!DoEvent(unsigned int wMsgFilterMin, unsigned int wMsgFilterMax) 行 17 + 0x1d バイト C++
10: hoge.dll!WndProc(HWND__ * hwnd, unsigned int msg, unsigned int wparam, long lparam) 行 181 + 0x1c バイト C++
11:…
DoEventはPeek/Translate/Dispatchする関数ですが、コールスタックはPeekMessageの行になっています。
ただし、PeekMessageには10:WndProcのHWNDとは別のHWNDを渡しています。
PeekMessageの中でごちゃごちゃ回って、0:WndProcにたどり着いています。
0:WndProcのHWNDは10:WndProcと同じハンドルです。
「PeekMessage 関数を呼び出すと、呼び出し側スレッドが所有しているウィンドウへ送信されたメッセージのうち、保留されていたものを取得できます。
SendMessage、SendMessageCallback、SendMessageTimeout、SendNotifyMessage の各関数を使って送信されたメッセージが、これに該当します。
システムは、内部イベントを処理することもあります。メッセージは、次の順序で処理されます。」
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
これでしょうか?
0028デフォルトの名無しさん
2012/08/29(水) 08:12:00.300029デフォルトの名無しさん
2012/08/29(水) 09:03:49.480030デフォルトの名無しさん
2012/08/29(水) 09:05:20.75最新の規格に関する質問
C++11/C++1y 15
http://toro.2ch.net/test/read.cgi/tech/1333433900
0031デフォルトの名無しさん
2012/08/29(水) 09:18:58.34【C++】高速化手法【SSE】
http://toro.2ch.net/test/read.cgi/tech/1130349336/
0032デフォルトの名無しさん
2012/09/02(日) 00:06:22.82char *buff
buff = (char*)malloc(sizeof(char) * length);
strcpy_s(buff, length, ...);
略
としたい場合strcpy_sの第2引数がsize_t(unsigned int)を超えてしまうんですけど
この場合どうすればいいですか?
0033デフォルトの名無しさん
2012/09/02(日) 00:10:45.100034デフォルトの名無しさん
2012/09/02(日) 00:54:26.4732ビットなら0〜4,294,967,295
0036デフォルトの名無しさん
2012/09/02(日) 02:35:49.03言い方を変えます
もしstrcpy_sの第2引数(文字列操作関数の文字数を渡す部分)が
受け取る型以上の数値を渡したい場合対応する関数って何ですか?
0037デフォルトの名無しさん
2012/09/02(日) 02:44:59.26その場合32bit以上コピーしようとしてることになるってのは理解できるか?
0038デフォルトの名無しさん
2012/09/02(日) 03:58:53.38strcpy_sの第2引数ってバッファのサイズで、size_tだったと思うけど
この型で表現できるサイズより大きいメモリは確保できないから考えるだけ無駄だと思うけど
0039デフォルトの名無しさん
2012/09/02(日) 16:17:15.72理解できます
32bit以上の文字数を扱う場合も書いた方が安全なのかって考えすぎてました
>>38
メモリ確保できないなら詰みなので考えないようにします
ありがとうございました
0040デフォルトの名無しさん
2012/09/16(日) 21:00:45.28メンバイニシャライザで、包含しているインスタンスのメンバ変数も
初期化できますか?
error C2059: 構文エラー : '.'というエラーが出てしまいます。
0041デフォルトの名無しさん
2012/09/16(日) 21:20:37.410042デフォルトの名無しさん
2012/09/16(日) 21:36:29.320043デフォルトの名無しさん
2012/09/26(水) 19:39:54.770044デフォルトの名無しさん
2012/09/26(水) 19:43:43.65高潔な魂をもった人間なら使いまわせる
0045デフォルトの名無しさん
2012/09/26(水) 20:54:48.250046デフォルトの名無しさん
2012/09/26(水) 21:03:01.85ありがとうございました
0047デフォルトの名無しさん
2012/10/04(木) 21:27:30.00抽象的な質問で申し訳ないですが、わかりやすく説明して頂けないでしょうか。
0048デフォルトの名無しさん
2012/10/04(木) 21:42:45.730049デフォルトの名無しさん
2012/10/04(木) 22:13:44.26イベントドリブン形式のプログラムを書いてみるとわかるよ
0050デフォルトの名無しさん
2012/10/04(木) 22:54:27.01割り込み を検索すればいい。
0051デフォルトの名無しさん
2012/10/05(金) 00:02:44.49定期的に関数を呼び出してもらうための仕組み
0052デフォルトの名無しさん
2012/10/08(月) 11:03:44.25class A;
class B;
class C;
があって、class AはpublicデータメンバとしてB obj1;を持っています。
各クラスは.cppと.hで書かれています。
class Cのメンバ関数内でobj1のpublicなメンバ関数を実行しようとすると
>error C2065: 'obj1' : 定義されていない識別子です。
というエラーが出るのですが、どこが間違っているのでしょうか
インクルードは問題無いです…
005352
2012/10/08(月) 11:05:11.570054デフォルトの名無しさん
2012/10/08(月) 11:09:50.14もっと詳しく書かないと
何が問題になってるのかわからんぞ
0055デフォルトの名無しさん
2012/10/08(月) 11:19:42.21>a.obj1.funcB();
を
obj1.funcB();
としていたみたいです。
0056デフォルトの名無しさん
2012/10/08(月) 11:22:48.05a->obj1.->uncB();
としてもエラーでした
error C2065: 'obj1' : 定義されていない識別子です。
error C2227: '->funcB()' : 左側がクラス、構造体、共用体、ジェネリック型へのポインターではありません。
となります。
0057デフォルトの名無しさん
2012/10/08(月) 11:32:14.20ttp://ideone.com/rRd0H
前方宣言だけでそのクラスのメンバ変数を使おうとしてないか?
0058デフォルトの名無しさん
2012/10/18(木) 11:47:36.31フォームにTopMost=Trueを設定し、最前面に表示させながらフォームは決して
アクティブウィンドウにならないようにしたいのですが、どのような方法がスマートなのでしょうか?
マウスクリックは透過させているのですが、フォームの位置やサイズを変更すると
勝手にアクティブになってしまい困っています
0059デフォルトの名無しさん
2012/10/18(木) 13:39:09.01http://toro.2ch.net/test/read.cgi/tech/1349163087/
0060デフォルトの名無しさん
2012/10/18(木) 18:34:34.060061デフォルトの名無しさん
2012/11/15(木) 04:09:15.82std::wstring型の文字列(reserve済)に、1文字だけ追加したい場合、
最も高速と思われる関数はどういったものになりますでしょうか。
wstr.append()では、wchar_t型の文字入力は受け入れてくれないようなので…。
おねがいします。
006261
2012/11/15(木) 04:29:35.78解決しました。失礼しました。
0063デフォルトの名無しさん
2012/11/17(土) 23:45:52.560064デフォルトの名無しさん
2012/11/18(日) 00:00:45.480065デフォルトの名無しさん
2012/11/18(日) 00:11:45.03ありがとう
0066デフォルトの名無しさん
2012/12/01(土) 13:54:01.29gccとmakeで開発しています。C++でなくCの範囲での開発です。
適切な値が設定されないまま、関数ポインタによる呼び出しが行われてしまうのを
回避する方法を探しています。
以下に例を示します。
0067デフォルトの名無しさん
2012/12/01(土) 13:56:05.94void (*handler_1)(int);
void (*handler_2)(int, char);
// ここに追加(1)
};
int main()
{
struct handlers obj[10];
//何らかの構造体メンバ初期化←ここの修正をし忘れる
(*obj.handler_1[10])(0);
(*obj.handler_2[10])(0, '1');
// ここに追加(2)
}
0068デフォルトの名無しさん
2012/12/01(土) 13:58:54.19上記のソースコードに、(1)構造体宣言にメンバ(関数ポインタ型)を追加し、
(2)main()内に呼び出し文を追加、
するところまでは良いのですが、ここでプログラマがミスをして、
新たに追加されたメンバを初期化するコードを書き忘れたとします。
コンパイルは成功してしまい、プログラム実行時に異常が発生してしまいます。
追加メンバ分の初期化コードの書き忘れを、C言語の範囲内で、
コンパイラのエラーや警告で検出する方法はないものでしょうか?
ただし、プログラム実行時のチェックによる方法は不可とします。
0069デフォルトの名無しさん
2012/12/01(土) 14:10:29.43失敗例1
「;」をパラメータとするマクロを使ってhandlers構造体を宣言し、同じマクロで
「,」をパラメータにして、メンバ初期化関数の引数リストの部分を作れないかと
思いましたが、「,」をマクロのパラメータにできず断念。
失敗例2
メンバ初期化のための原型となるhandlers変数を1個用意して、
構造体初期化子{}を使って初期化する方法。
[{}内の項目の個数]より[構造体メンバの数]のほうが多くてもコンパイルエラーになってくれないのでNG。
007066
2012/12/01(土) 15:01:37.74例題のソースコードでmain()内の呼び出し部分の配列添え字がおかしくなってます。
すみませんです。
0071デフォルトの名無しさん
2012/12/01(土) 23:24:04.16テンプレートとかboostとか駆使したり、コードインジェクトとかいう謎の技術でDirectXをハックしているソース見てしまって
底の深さに愕然としてしまった
こういうバッドノウハウ的なものや、boost、C++11などの最新技術をスマートに学ぶにはどうしたらいいかね
おすすめのソースとか書籍あったら紹介してもらえると嬉しい
0072デフォルトの名無しさん
2012/12/04(火) 22:14:29.22C++でもjavaのようにthis使っていいですか?
0073デフォルトの名無しさん
2012/12/04(火) 23:54:34.62Javaと違ってC++はポインタなんでそこだけ注意
0074デフォルトの名無しさん
2013/02/01(金) 20:04:32.000075デフォルトの名無しさん
2013/02/03(日) 20:00:53.10/* foo /* bar */ baz */ のようなコメントのネストが許されない
仕様になっているのはなぜなんでしょうか。
Cコンパイラがforやifブロックのネストを解釈できるのなら /* 〜 */ のネストだって
理解可能だと思うんですが、コンパイラが混乱することでもあるんでしょうか。
0076デフォルトの名無しさん
2013/02/03(日) 20:10:06.02http://www.kouno.jp/home/c_faq/c20.html#20
> Cのコメントが入れ子にできないのは、PL/Iのコメントが入れ子にで きないからである。CはPL/Iからコメントについてのアイデアを借用 している。
PL/Iのコメントがネストできない理由は知らん。
0077デフォルトの名無しさん
2013/02/03(日) 20:53:42.51*/ を含めない問題は放置なので多分関係ない
0078デフォルトの名無しさん
2013/02/03(日) 21:07:18.96単に、処理がちょい面倒で、そんなに必要性を感じなかっただけでしょ。
0079デフォルトの名無しさん
2013/02/03(日) 23:13:23.180080デフォルトの名無しさん
2013/02/03(日) 23:21:25.890081デフォルトの名無しさん
2013/02/03(日) 23:25:14.890082デフォルトの名無しさん
2013/02/03(日) 23:56:20.98そんな記述の具体例ってあるでしょうかね。
自分はまったく思いつかないのですが。。。
ところで本当をいいますと、今私が使っているのはMQLって言語でして、仕様的にほとんどC言語なんですが
#ifや#ifdef系のプリプロセッサが一切ないんで、上記のワザが使えないんです。
そのくせにコメントがネストできないという負の遺産(?)はシッカリ受け継いでいるんです(>。<)
0083デフォルトの名無しさん
2013/02/04(月) 00:12:58.68別にないでしょ、あなたの言う通りforやifブロックのネストを解釈できるのなら
/* 〜 */ のネストだって理解可能だと思うよ
本当にほんのちょっとだけコンパイラ(プリプロセッサか)の処理が面倒なだけで
たまたま不便な仕様だったと諦めるしかないね
0084デフォルトの名無しさん
2013/02/04(月) 00:15:49.45エディタにその機能がなければ、マクロで機能追加したり
008582
2013/02/04(月) 00:49:43.20ちなみに自分がやっているのは、if条件の一部を一時的に殺してテスト
…
if( /* a>b && */ c>d ) {
if( /* e>f && */ g>h ) {
if( /* i>j || */ k>l ) {
…
さらにこのif前後の処理ブロックをまとめて一時的にコメント・アウトしてテストするってことです。
行頭//は使えますが、まとめる行数が多いので、入れ子状態で大域を/* */で括れると便利なこと
この上ないんです。
でもありがとうございました。
0086デフォルトの名無しさん
2013/02/04(月) 00:54:15.48ま、しゃーないんじゃない
0087デフォルトの名無しさん
2013/02/04(月) 13:03:22.44/**/ネストできるコンパイラだった・・・
0088デフォルトの名無しさん
2013/02/04(月) 20:11:54.310089デフォルトの名無しさん
2013/02/05(火) 01:47:00.36>さらにこのif前後の処理ブロックをまとめて一時的にコメント・アウトしてテストするってことです。
こっちは #if 0 とかで良いんじゃないの?
0090デフォルトの名無しさん
2013/02/05(火) 01:49:21.060091デフォルトの名無しさん
2013/02/05(火) 01:49:43.910092デフォルトの名無しさん
2013/02/05(火) 05:03:13.31いちいち一行づつコメントアウトするのがめんどくさいとか言うのは無しな
そんなもん、エディタの設定(マクロとか)で、大抵なんとかなる
もしかして、行コメントもないのか?
0093デフォルトの名無しさん
2013/02/05(火) 05:06:12.36俺はエディタのマクロとかで、選択行全部を行コメントアウト出来るようにしてるよ
0094デフォルトの名無しさん
2013/02/05(火) 07:15:25.36009585
2013/02/05(火) 09:14:07.22コーディングのアイデアをお寄せいただけるのは有難いのですが、
私の質問は
・(コメントのネストを)どうやればいいのでしょうか?
ではなくて、
・(ネストできない仕様は)なぜなんでしょうか?
です。
実際は、コメントアウトしたい部分は関数の中だし、任意の文字列を埋め込みたいわけじゃないので
if(0) {
…
if( /* a>b && */ c>d ) {
if( /* e>f && */ g>h ) {
if( /* i>j || */ k>l ) {
…
}
}
}
…
}
みたいにやって一時的に実行を迂回させてます。
ありがとうございました。
0096デフォルトの名無しさん
2013/02/05(火) 20:41:35.01多分、解析できない記述が存在するからだと思う
/*
int a=1;
int *p=&a;
int b=2/*p;
*/
0097デフォルトの名無しさん
2013/02/05(火) 21:02:18.410098デフォルトの名無しさん
2013/02/05(火) 21:19:07.86それは正しくない
0099デフォルトの名無しさん
2013/02/05(火) 21:23:49.12コメントになってしまう問題のある記述じゃないのか?
0100デフォルトの名無しさん
2013/02/05(火) 22:01:51.44そうじゃないらしいな
0101デフォルトの名無しさん
2013/02/05(火) 22:27:28.600102デフォルトの名無しさん
2013/02/05(火) 22:37:23.082 / 1なのかコメント最初の/*なのか
じゃないのか?
0103デフォルトの名無しさん
2013/02/05(火) 22:42:18.89正解!
0104デフォルトの名無しさん
2013/02/05(火) 22:51:30.410105デフォルトの名無しさん
2013/02/05(火) 22:56:44.09何で?
0106デフォルトの名無しさん
2013/02/05(火) 23:02:49.61http://ideone.com/koUYhr
>>96の外側のコメントを外したら int b=2/*p; の /* 以降がコメントになるでしょ。
ならネスト出来る仕様だったら>>97の言う通り「コメントが閉じられていない」と解釈されるのが自然だし、
普通にコメントのネストを解釈するそう解釈する処理系はもちろん作れる。
0107106
2013/02/05(火) 23:04:10.76そもそも式がどうとか解釈する前にプリプロセッサがコメントを除去するんだから>>102みたいな曖昧性は生じないんじゃないの。
0108デフォルトの名無しさん
2013/02/05(火) 23:07:36.520109デフォルトの名無しさん
2013/02/05(火) 23:11:55.81ネスト出来る仕様 → コメントを外しても外さなくても問題が起こる
どちらにせよ問題があるので
無関係としか言いようが無い
0110デフォルトの名無しさん
2013/02/05(火) 23:22:52.150111デフォルトの名無しさん
2013/02/05(火) 23:27:47.32字句解析的な意味で
0112デフォルトの名無しさん
2013/02/06(水) 05:28:06.84費用対効果悪すぎって判断じゃね?
って言うか、D&E読む限り、行コメントの方を推奨している模様
0113デフォルトの名無しさん
2013/02/06(水) 07:29:14.060114デフォルトの名無しさん
2013/02/06(水) 08:15:00.540115デフォルトの名無しさん
2013/02/06(水) 10:36:31.920116デフォルトの名無しさん
2013/02/06(水) 10:58:38.92規格上は問題なくて、単にコンパイラの不備だとおもう
ソースを読み終えた時点で「/*」に対する「*/」が見つからなければ、除算演算子とポインタ演算子の組み合わせって判断できるからね
つまり何重の入れ子コメントになっていても、一番外側の「/*」「*/」ペアが成立する限り
その中身を読み飛ばせばいいだけ。入れ子コメントの実装は可能
ちなみに入れ子コメントに意味があるか、を問題にするのはナンセンス
正しく構文が解釈できる限り、プログラマに対する制限は緩い方向(自由度が高い方向)へ仕様設計すべきだからね
メモリーやディスク容量、コンパイル時間等によって制限されるなら仕方ないと言えるが
0117116
2013/02/06(水) 11:05:32.14誤> 規格上は問題なくて、単にコンパイラの不備だとおもう
正> 規格には問題ないのにエラーとして処理するのはコンパイラの不備だとおもう
0118デフォルトの名無しさん
2013/02/06(水) 15:09:16.630119デフォルトの名無しさん
2013/02/06(水) 17:06:29.80int *i;
↑だとエラーが出ないのに
↓だとエラーが出ます
int x[2];
x[0] = 1;
x[1] = 10;
int *i;
error C2143: 構文エラー : ';' が '型' の前にありません。
何故こうなるのか分かりません・・・
0120デフォルトの名無しさん
2013/02/06(水) 17:15:06.96エラー出ないけど
0121デフォルトの名無しさん
2013/02/06(水) 17:20:48.07C89規格でコンパイルしているからでしょう
int x[2];
int *i;
x[0] = 1;
x[1] = 10;
としたら大丈夫。
変数の宣言がブロックの先頭になければならない。
0122デフォルトの名無しさん
2013/02/06(水) 17:21:49.54Cは変数宣言をブロックの先頭でしないといけないからこうだろ
int x[2];
int *i;
x[0] = 1;
x[1] = 10;
0123デフォルトの名無しさん
2013/02/06(水) 17:22:41.770124デフォルトの名無しさん
2013/02/06(水) 19:13:06.06じゃあさ、やってみてよ。
gccならオープンなんだからさ。
口だけなら、誰でも言えるんだよなー。
0125デフォルトの名無しさん
2013/02/06(水) 20:08:49.32アホか
コメントはコンパイラじゃなくプリプロセッサが処理するんだよ
演算子なんて解析しねーよ
0126デフォルトの名無しさん
2013/02/06(水) 20:46:36.31ifはコンパイラが処理するからネストできるけど
コメントはプリプロセッサが処理するからネストできない
ってことですね!
0127デフォルトの名無しさん
2013/02/06(水) 21:04:10.66http://ideone.com/rKasOJ
0128デフォルトの名無しさん
2013/02/06(水) 21:15:56.31わざわざありがとうございます!
コメントと間違うから/と*は離して書きましょう
ってことですね!
じゃあ 結局 コメントがネストできない理由ってなんすかねー Orz
0129デフォルトの名無しさん
2013/02/06(水) 21:49:28.29なぜ昔の人がそう決めたかと気になるかもしれないが、たいてい当時の技術的には難しかったとかそんなもんさ
0130デフォルトの名無しさん
2013/02/06(水) 22:17:50.29/* */ → ネストできない
両者を分かつ技術的困難が何なのか興味あるな。
カーニハンの存命中に尋ねてみたい。
0131デフォルトの名無しさん
2013/02/06(水) 22:38:38.93わざわざサポートするメリットが無いとか、どうせそんな理由だよ
そもそも、コメントはネストさせるようなものでは無いし
デバッグで一時的に〜とかは、本来の使い方ではないわな
0132デフォルトの名無しさん
2013/02/06(水) 22:41:38.10コメントをコンパイルするとか、空間的にも時間的にも、ムダばかりでメリットがない
0133デフォルトの名無しさん
2013/02/06(水) 22:41:42.35コメントアウトは考慮外というか
0134デフォルトの名無しさん
2013/02/06(水) 22:47:07.83C++でもあったろ?テンプレート書くときの括弧が場合によって演算子に判断されるようなの
それが昨今の構文解析技術の進歩で解消されたあれ
0135デフォルトの名無しさん
2013/02/06(水) 23:02:55.09単にそういう仕様変更をしただけというか
0136デフォルトの名無しさん
2013/02/06(水) 23:11:01.67>コメントをコンパイルするとか、
誰もそんなことは言ってないが?
0137デフォルトの名無しさん
2013/02/06(水) 23:12:23.75とにかく処理したくないってことだろう
昔はコンパイル凄く遅かったから
コメントアウトするくらいなら削除したんだろうよ
0138デフォルトの名無しさん
2013/02/06(水) 23:16:03.47http://wisdom.sakura.ne.jp/programming/d/d3.html
0139デフォルトの名無しさん
2013/02/06(水) 23:27:21.450140デフォルトの名無しさん
2013/02/06(水) 23:27:54.86これは一理あると思う。
そうでなくともifブロックやforループの解析で
どこまでソースを読み込まなくちゃならないかわからないのに
コメントごとき(笑)でワーキングメモリを消費したくないとか。
そりゃコメントネストの方が優先順位が低いわな。
「あん時 研究所にあったマシンがPDPじゃなくてVAXだったら
ワシらもちゃんと実装しておったよ」とかw
0141デフォルトの名無しさん
2013/02/07(木) 00:35:51.33今まで""の中以外ではスペースは入れても入れなくてもどちらでもいいと思っていたからこれは盲点(不勉強)だった
b=2/*p; b=2 / *p;
0142デフォルトの名無しさん
2013/02/07(木) 07:18:42.35スペースを入れないとコメントになってしまうように規定されているんだよ
0143デフォルトの名無しさん
2013/02/07(木) 10:14:45.56そのとおり。
JIS X 3010で「文字の並び/*は注釈の始まりを示す」
と規定されているよ(6.4.9) だからb=2/*p;をb=2/(*p);とは解釈しない。
116の間違いはこの点にあるとおもう。
除算を意図しても構文が【規格上間違っている】のだ。
これはコンパイラ(プリプロセッサを含む)のインプリの話ではなく
C言語規格の問題だ。125の揚げ足取りでは何の反論にもなっていない。
116の言う「コンパイラの不備」ではなく、規格に反した記述だったから
エラーではじかれたわけだね。
ネスティングができない理由は、当時の計算機リソースだとコンパイラ
(プリプロセッサを含む)のインプリが楽だったから…
くらいじゃないのかな。(←これはオレの想像)
0144デフォルトの名無しさん
2013/02/07(木) 10:29:06.680145デフォルトの名無しさん
2013/02/07(木) 19:46:12.570146デフォルトの名無しさん
2013/02/08(金) 06:36:34.76callocで確保できるだけ確保したら1.6GBしか確保できません
メモリは1バイト確保しようとしたら8バイトに丸められると見たので
8の倍数から確保できなくなったらマイナス8して再度確保という感じでしています
for(unSize=262144; 8<=unSize; unSize-=8) {
do {
calloc(unSize, 1);
} while(確保できる間);
}
確保部分のソースとしてはこんな感じです
実際はリスト構造を使用してそこに確保したポインタを指定しています
リスト構造自体のサイズを考慮しても2GB - 1.6GBの400MBには達しないのですが
どうすればプロセス毎の最大値2GBまで確保できるようになりますか?
0147デフォルトの名無しさん
2013/02/08(金) 08:57:37.51ただの妄想だろ
環境くらい書け
0148デフォルトの名無しさん
2013/02/08(金) 09:17:28.49OS Vista Home 32bit
メモリ3GB
メモリクリーナーでは2GB超のメモリを空きメモリにできるのですが
その後>>146を試しても1.6GBしか確保できません
0149デフォルトの名無しさん
2013/02/08(金) 09:52:54.780150デフォルトの名無しさん
2013/02/08(金) 12:34:48.240151デフォルトの名無しさん
2013/02/08(金) 23:08:49.00物理メモリ3GB
仮想メモリ4GB
です
>>150
1度に2GBを確保しようとしているのではなくて
>>146のソースで示した通り小分けにして確保しています
0152デフォルトの名無しさん
2013/02/08(金) 23:20:00.680153デフォルトの名無しさん
2013/02/09(土) 00:35:50.260154デフォルトの名無しさん
2013/02/09(土) 03:19:49.29プロセスタブにあるメモリ列が1.6GBになると止まってしまいます
0155デフォルトの名無しさん
2013/02/09(土) 08:57:06.04プロセス毎に動的確保できるのは2GBまで
0156デフォルトの名無しさん
2013/02/09(土) 12:52:49.470157デフォルトの名無しさん
2013/02/09(土) 14:28:23.13mallocで小分けにして物理メモリの空き領域以上を確保したら
それ以外の既存のデータがページファイルに追いやられるよね
これで一応メモリ掃除できたとか思ってたけど
見かけ上空きメモリが増えただけで
メモリクリーナーはまた別のやり方でメモリ空けてんの?
0158デフォルトの名無しさん
2013/02/09(土) 16:38:58.76ならWindowsはそういうものなのかもね
0159デフォルトの名無しさん
2013/02/09(土) 18:53:40.35メモリクリーナーも一緒(mallocじゃなくて別の関数かもしれんが)
ページファイルに追いやって、すぐ使える物理メモリを確保する
0160デフォルトの名無しさん
2013/02/10(日) 01:11:25.69ありがとうございました
0161デフォルトの名無しさん
2013/02/10(日) 20:42:03.54プログラム終了時に明示的にfreeするべきでしょうか。
それともやるだけムダでしょうか。
0162デフォルトの名無しさん
2013/02/10(日) 20:59:42.09使わなくなったタイミングで解放しないの?
0163デフォルトの名無しさん
2013/02/10(日) 21:09:49.18基本的には適切なタイミングで解放しましょう
0164デフォルトの名無しさん
2013/02/10(日) 23:04:15.12大昔、fj.comp.lang.cでこの辺りが話題になったことがありまして
上でmallocの話が出て思い出しついでにちょっと尋ねてみました。
当時、malloc/callocがメモリを確保するヒープ領域は、プログラム(正確にはプロセスだったか?)終了後に
OSが解放するんだからfreeは不要だ!と主張する人がいたことを憶えています。
プログラムを"安全側"に設計することに嫌悪する人もいたり…
私もfreeするべきだと思います。
プログラムもOSも、それぞれが自分がやったことの後始末は、基本的に
自分の中で責任持って完結するべき、と思ってます。
OSがやってくれるからサボってていいや〜みたいな考え方だと
余計なトラブルを招きかねないですよね。まぁ安全側の考え方ですが。
つまらない話、すみませんでした。
0165デフォルトの名無しさん
2013/02/10(日) 23:55:27.08その手の話は...
終了直前以外でfree不要と言うバカいるの?2人目
http://toro.2ch.net/test/read.cgi/tech/1359585842/
でやってくれ。
0166デフォルトの名無しさん
2013/02/11(月) 00:37:45.350167デフォルトの名無しさん
2013/02/11(月) 13:34:42.38プログラム終了時にOSなりライブラリが自動で解放してくれるのが
保証されているなら、解放処理は書かなくてもいいだろうが、
解放処理が書かれていれば
「このコードを書いた人はメモリをちゃんと把握しているな」
という示しになる。
0168デフォルトの名無しさん
2013/02/14(木) 17:11:00.62とする場合fnFunctionを変数参照で指定する場合は変数をどう定義したらいいですか?
イメージとしては
unsigned int *sum;
sum = fnFunction;
_beginthreadex(NULL, 0, sum, NULL, 0, 0);
としたいのですがパラメーターと互換性がありませんと出てしまいます
0169デフォルトの名無しさん
2013/02/14(木) 17:28:51.30unsigned int (*sum)(void *);
でしてみたらどうでしょうか?
0170デフォルトの名無しさん
2013/02/14(木) 17:37:46.89unsigned int (__stdcall *sum)(void*)
としたらいけました
でもなんか今まで書いた事のない書き方なので気持ち悪いです
もっとスマートな書き方は無さそうですし慣れるしかないんでしょうか
UINT (WINAPI *sum)(VOID*)
これくらいでしょうか
0171デフォルトの名無しさん
2013/02/14(木) 17:46:26.26typedef unsigned int (*FUNCPTR) (void *);
FUNCPTR pf;
pf = func;
pf(…);
で良いんじゃないの
0172デフォルトの名無しさん
2013/02/14(木) 17:56:58.97宣言する普通の(標準規格に沿ったの意)書き方です。
下段のように書き換えても本質は同じなんで、私はそんなにスマートさは感じませんけど。。。
0174デフォルトの名無しさん
2013/02/14(木) 18:07:43.21何回も書くなら>>171みたいにしたらいいと思う
()の位置が気持ち悪いのはわかる
0175デフォルトの名無しさん
2013/02/14(木) 18:37:45.62>今まで書いた事のない書き方なので気持ち悪いです
関数ポインタ宣言の基本型さえ押さえときゃ気持ち悪くならないよ。
関数の返却値の型 (*変数名)(引数の宣言);
※オレの流儀は sum = &fnFunction; だなぁ。ま、好みの問題だww
0176デフォルトの名無しさん
2013/02/14(木) 18:50:09.99> でもなんか今まで書いた事のない書き方なので気持ち悪いです
関数ポインタの記述のしかたはCの中でも特例だから、
「そういうもんなんだ」と思う以外に選択肢は無い。
0177デフォルトの名無しさん
2013/02/14(木) 19:33:53.05括弧の位置がコンパイラによって互換性なくていちいちtypedefしてた記憶がある
0178デフォルトの名無しさん
2013/02/14(木) 21:09:39.72typedef struct hoge {
unsigned int (__stdcall sum)(void*)
};
って事?
hoge.sum hoge->sumができなくね?
0179デフォルトの名無しさん
2013/02/14(木) 22:50:41.63ちょっと175との絡みがわからないけど、hogeはタグ名であって構造体変数じゃないからできないんじゃないの?
0180デフォルトの名無しさん
2013/02/14(木) 23:14:05.51typedef unsigned int FUNC(void *);
FUNC* pf;
pf = func;
pf(…);
0181デフォルトの名無しさん
2013/02/14(木) 23:43:30.85unsigned int _(_stdcall sum)(void*)とか
hoge.sum = &fnFunction
hoge->sum = &fnFunction
できないんじゃない?
0182デフォルトの名無しさん
2013/02/14(木) 23:57:18.01こういう話かな?
0183デフォルトの名無しさん
2013/02/15(金) 00:10:59.25コピペの恐怖
0184デフォルトの名無しさん
2013/02/15(金) 00:12:58.03そもそもなんで関数ポインタから関数の型の宣言に話がかわったんだ?
0185デフォルトの名無しさん
2013/02/15(金) 00:17:24.03http://ideone.com/kwArU8
0187デフォルトの名無しさん
2013/02/15(金) 11:34:57.86構造体のメンバに関数ポインタを持つことは可能
#include <stdio.h>
unsigned int MyFunc( char *buf )
{
puts(buf);
return 1;
}
int main(void)
{
struct _hoge {
unsigned int (*sum)(void *);
} hoge;
hoge.sum = &MyFunc;
(*hoge.sum)("hello, world");
return 0;
}
0188デフォルトの名無しさん
2013/02/15(金) 11:39:00.05すまん。うかつだった orz
hoge.sum = &MyFunc; は hoge.sum = &MyFunc;
0189デフォルトの名無しさん
2013/02/15(金) 12:38:09.52hoge.sum = &MyFunc;
hoge.sum = MyFunc;
&があっても無くても同じ動作するのか
てっきり前者と後者で違うから
unsigned int (**sum)(void *);
hoge.sum = &MyFunc;
unsigned int (*sum)(void *);
hoge.sum = MyFunc;
こうしないといけないと思ってた
0190デフォルトの名無しさん
2013/02/15(金) 12:44:01.23暗黙に、関数ポインタは関数に変換される。
0191デフォルトの名無しさん
2013/02/15(金) 12:54:20.660192デフォルトの名無しさん
2013/02/15(金) 14:11:26.060193デフォルトの名無しさん
2013/02/15(金) 19:33:21.99無駄が多いように思うんだけど何か理由でもあるの?
関数呼び出し
関数(引数リスト) or 関数ポインタ(引数リスト)
配列要素参照
配列[インデックス] or ポインタ[インデックス]
関数が関数ポインタに暗黙に変換されるのなら
関数ポインタ(引数リスト)の定義1つで済む気がするのだが
0194デフォルトの名無しさん
2013/02/15(金) 19:36:45.920195デフォルトの名無しさん
2013/02/15(金) 19:58:43.75式が必要な箇所で <値 or 括弧式> '(' の並びを見つけた時点で
関数呼び出しであるという判定を行ってパースするはずだけど、
ここでこの <値 or 括弧式> が関数ポインタに変換可能なら良いとすれば
関数も関数ポインタも両方受け付けられるのではなかろうか
0196デフォルトの名無しさん
2013/02/15(金) 21:24:51.760197デフォルトの名無しさん
2013/02/15(金) 21:27:13.28関数ポインタに暗黙変換して右辺値になって何か不都合ある?
0198デフォルトの名無しさん
2013/02/20(水) 14:00:23.88グローバルに下記を設定しておく。
static int WIDTH=320,HEIGHT=240;
static array<bool,2>^ pixels_new=gcnew array<bool,2>(WIDTH+2,HEIGHT+2); //一回ごとの細線化結果を入れる
static array<bool,2>^ pixels_old=gcnew array<bool,2>(WIDTH+2,HEIGHT+2); //一回ごとの細線化対象を入れる
bool change_flag;
private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
Graphics^ g=e->Graphics;
int X0=10,Y0=10;
int X1=340,Y1=10;
int UPPER_LEFT=2,LOWER_RIGHT=6,UPPER_RIGHT=0,LOWER_LEFT=4;
Color color1;
int i,j;
Bitmap^ bmap_exp=gcnew Bitmap(WIDTH+2,HEIGHT+2); //拡張画像
Bitmap^ bmap_thin=gcnew Bitmap(WIDTH,HEIGHT); //最終線画化画像
とまだまだプログラムは続くのですが
「グローバルに下記を設定しておく。」とはどこからどこまでを設定すればいいのでしょうか
0199デフォルトの名無しさん
2013/02/20(水) 14:04:33.35自分で決めろよ
0200デフォルトの名無しさん
2013/02/20(水) 14:38:11.99//homepage3.nifty.com/ishidate/vcpp10_g8/vcpp10_g8.htm
こちらのHPを見て勉強しているのですが理解ががが
0201デフォルトの名無しさん
2013/02/20(水) 14:56:33.41初心者にC++/CLIやらせるとか糞だな
C++/CLIはC/C++じゃないのでスレ違い
http://toro.2ch.net/test/read.cgi/tech/1268613679/
まずはそんな画像処理なんかより言語自体の勉強をすべき
0202デフォルトの名無しさん
2013/02/20(水) 15:06:39.71スレチすいませんっした
0203デフォルトの名無しさん
2013/02/21(木) 09:55:39.62今後1000000TBのHDDが出たとして
正常な空き容量を返せますか?
この関数が返す戻り値が__int64のようなので
これの最大値までは大丈夫なのでしょうか?
それともOSで最大値が制限されてたりしますか?
0204デフォルトの名無しさん
2013/02/21(木) 10:24:59.380205デフォルトの名無しさん
2013/02/21(木) 11:10:11.600206デフォルトの名無しさん
2013/02/21(木) 11:23:53.750207デフォルトの名無しさん
2013/02/21(木) 11:34:51.91あれは目印だめの存在
0208デフォルトの名無しさん
2013/02/21(木) 12:03:32.66(int*)p; // できる
reinterpret_cast<int*>(p); // できない
char c;
(double)c; // できる
reinterpret_cast<double>(c); // できない
0209デフォルトの名無しさん
2013/02/21(木) 12:10:41.95おおお。有難うございます。
後者のはstatic_castなら大丈夫なんですね。勉強になりました。
0210デフォルトの名無しさん
2013/02/21(木) 15:37:36.23208が紛らわしいレスしてる責任があるけど
209が仕事で恥かいても俺は知らないけど
0211デフォルトの名無しさん
2013/02/21(木) 15:52:10.10初心者みたいだし仕方ないよw
0212デフォルトの名無しさん
2013/02/21(木) 16:15:24.490213デフォルトの名無しさん
2013/02/21(木) 18:43:50.27static_cast<unsigned long>(x) = b;
の挙動を正確に説明できる奴なんて早々居ないんじゃね
0214デフォルトの名無しさん
2013/02/21(木) 19:47:48.410215デフォルトの名無しさん
2013/02/21(木) 19:56:04.750216デフォルトの名無しさん
2013/02/21(木) 20:28:46.200217デフォルトの名無しさん
2013/02/21(木) 20:34:55.140218デフォルトの名無しさん
2013/02/21(木) 21:12:45.000219デフォルトの名無しさん
2013/02/21(木) 21:14:21.310220デフォルトの名無しさん
2013/02/24(日) 03:34:10.670221デフォルトの名無しさん
2013/03/02(土) 14:09:21.00gcc E -DPAPAN_DNA=1 maman.c > okochan1.c
gcc E -DPAPAN_DNA=2 maman.c > okochan2.c
PAPAN_DNAの部分だけ展開するような
0222デフォルトの名無しさん
2013/03/02(土) 18:15:27.750223デフォルトの名無しさん
2013/03/02(土) 20:14:52.320224デフォルトの名無しさん
2013/03/02(土) 23:37:50.400225デフォルトの名無しさん
2013/03/02(土) 23:54:27.68LoadLibrary と GetProcAddress で
それぞれのDLLのFuncのアドレスを取得して
別々に使う。
0226デフォルトの名無しさん
2013/03/03(日) 13:08:25.80linuxのsoなら
dlopen と dlsym で
それぞれのsoのFuncのアドレスを取得して別々に使う。
静的libなら。。。
0227デフォルトの名無しさん
2013/03/03(日) 13:12:03.700228デフォルトの名無しさん
2013/03/04(月) 18:20:08.790229デフォルトの名無しさん
2013/03/05(火) 18:37:20.77変更したらOS上で変更しない限り永続させたいです
お願いしますm(__)m
0230229
2013/03/05(火) 23:09:52.510231229
2013/03/07(木) 12:55:47.880232デフォルトの名無しさん
2013/03/07(木) 18:35:00.590233デフォルトの名無しさん
2013/03/07(木) 19:21:59.71そりゃ誰にも分からん
0234デフォルトの名無しさん
2013/03/07(木) 19:23:19.770235デフォルトの名無しさん
2013/03/07(木) 19:31:58.280236デフォルトの名無しさん
2013/03/08(金) 22:11:25.08うるせえよゴミw
早く死ねよゴミw
0237デフォルトの名無しさん
2013/03/08(金) 22:17:36.630238デフォルトの名無しさん
2013/03/13(水) 00:19:54.910239デフォルトの名無しさん
2013/03/13(水) 01:31:36.41char型の非constアドレスを要求するCのライブラリ関数などに
このオブジェクトの持つバッファのアドレスを渡すにはどうしたらよいでしょうか。
data()のアドレスをキャストして無理やり渡してみたら書き込む事は出来たのですが、
保証されない動作になると思われるうえ、当然length()の値との整合性が取れなくなってます。
と書いたのを読み返してみたら、関数側がlengthの仕組みを認識出来ない以上無理な気がしてきた。
char型のバッファでワンクッション置くしか無いんでしょうか…
0240デフォルトの名無しさん
2013/03/13(水) 02:57:19.420241デフォルトの名無しさん
2013/03/13(水) 07:39:56.18ほらよ
http://ideone.com/7uRXoZ
0242デフォルトの名無しさん
2013/03/13(水) 21:49:02.60ttp://ideone.com/0Njz2Y
0243デフォルトの名無しさん
2013/03/14(木) 00:26:51.41C++11から
0244デフォルトの名無しさん
2013/03/14(木) 01:03:48.760245デフォルトの名無しさん
2013/03/14(木) 03:25:53.19なるほどresize()を使って帳尻を合わせておけばいいんですね
ありがとうございます
>>242
連続性が保証されていないバージョンがあったんですね
参考になります
0246デフォルトの名無しさん
2013/03/14(木) 07:39:01.96C++03までは規格上は保証はされていないけど、
連続性の無い実装は1つも無いよ
だからこそC++11で保証するようになったんだし
0247デフォルトの名無しさん
2013/03/17(日) 15:33:29.83スレ立てるまでもない質問はここで 126匹目
質問する前にGoogleで検索しましょう。http://www.google.co.jp
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。
前スレ
スレ立てるまでもない質問はここで 125匹目
http://toro.2ch.net/test/read.cgi/tech/1361608847/
0248デフォルトの名無しさん
2013/03/17(日) 21:16:39.62他人任せの精神異常者はさっさと消えてください
0249デフォルトの名無しさん
2013/03/17(日) 21:20:02.22Bluetoothデバイスをサーチするときの
BLUETOOTH_DEVICE_SEARCH_PARAMSの設定を詳しく教えてください。
fReturnAuthenticated = 以前にペアリングしたことがある
fReturnRemembered = ペアリングしたことはないが、以前検索に引っかかったことがある?
fReturnConnected = 現在接続しているデバイス
fReturnUnknown = 一度もペアリングしたことのないデバイス
fIssueInquiry = ?
他のところも間違えていたら指摘お願いします
0250デフォルトの名無しさん
2013/03/17(日) 23:08:05.38その情報にいくら払えるって?
0251デフォルトの名無しさん
2013/03/18(月) 01:09:52.09そんなこといわんといて・・・
0252デフォルトの名無しさん
2013/03/19(火) 23:15:50.720253デフォルトの名無しさん
2013/03/27(水) 01:34:33.89#include <signal.h>
void (*signal(int signum, void (*handler)(int)))(int);
は
intを引数に取り、void型の戻り値を持つ
関数ポインタの宣言。
とは、違うんですよね?
どのように解釈するのでしょうか?
この宣言から
signal( SIGINT, SIG_IGN );
がコンパイルエラーにならない理由が良く分からないです。
0254デフォルトの名無しさん
2013/03/27(水) 02:49:26.68signal()の戻り値は関数ポインタ。
第一引き数はint。
第二引き数は関数ポインタ。
SIG_IGNは関数ポインタのはず。
0255デフォルトの名無しさん
2013/03/27(水) 07:11:37.48signal_handler signal(int signum, signal_handler handler);
こう解釈する
0256デフォルトの名無しさん
2013/03/27(水) 21:27:43.240257デフォルトの名無しさん
2013/03/31(日) 01:19:26.30free関数に関する質問です、よろしくおねがいします。
free関数は、どうやって、どこまでのメモリを解放するか判定しているのでしょうか?
free関数にわたすのは、先頭のポインタですよね。終了点はどこから情報を得ているのでしょうか。
int* px;
px = (int *)malloc(sizeof(int) * 10);
という感じで、メモリを動的に確保した後に、
free(px);
で普通に解放。
しかし、ためしに、
px++; /*してから*/
free(px);
解放してみると、派手にエラーを吐いたので、
実行時の解放中に気づいた?ようです。
px++;
px--;
free(px);
だと正しく解放したようです。
よろしくおねがいします。
0258デフォルトの名無しさん
2013/03/31(日) 01:49:58.29処理系依存の話になるが、
たいていはmallocが呼ばれたときに、ポインタからサイズが得られるように
構造体を使ったヒープや配列で管理している。
0259デフォルトの名無しさん
2013/03/31(日) 02:00:42.14_msize(px);
でサイズ得られるから
内部で管理されてる事になるね
0260257
2013/03/31(日) 02:06:49.02ありがとうございます。
別のところで、管理されているのですね。
ということは、
malloc() で動的に確保したメモリのポインタに
(別のアドレスを)再代入しない方がよさそうですね。
0261デフォルトの名無しさん
2013/03/31(日) 02:08:47.21当たり前だろボンクラ
どんな本で勉強してんだパーかおめ
0262257
2013/03/31(日) 02:15:33.97自分の環境では、
undefined reference to '_msize'
となりましたが、たしかに、環境によってはメモリサイズが得られるようですね。
ありがとうございます。
>>260
たぶん当たり前すぎて、書いてありませんでした。。(^^;)
0263デフォルトの名無しさん
2013/04/01(月) 03:34:20.26>(別のアドレスを)再代入しない方がよさそうですね。
これって行った場合、
プログラム終了時に一般的なOSならfreeされますよね?
0264デフォルトの名無しさん
2013/04/01(月) 06:26:11.430265デフォルトの名無しさん
2013/04/01(月) 14:57:44.150266デフォルトの名無しさん
2013/04/01(月) 15:36:19.330267デフォルトの名無しさん
2013/04/01(月) 18:15:40.080268デフォルトの名無しさん
2013/04/01(月) 22:43:38.310269デフォルトの名無しさん
2013/04/01(月) 22:53:09.700270デフォルトの名無しさん
2013/04/02(火) 06:21:12.50free()していないメモリブロックは、OSなりでよきに計らわれる。
なので、生存期間の短い大量のメモリを使用しないようなプログラムでは
ポインタ変数の使い回しによるfree()の省略はしばしば行なわれる。
0271デフォルトの名無しさん
2013/04/02(火) 18:01:31.590272デフォルトの名無しさん
2013/04/02(火) 22:52:57.080273デフォルトの名無しさん
2013/04/02(火) 23:11:27.390274デフォルトの名無しさん
2013/04/02(火) 23:22:42.22freeしたくないやつは自分が担当するソース以外はfree消すな
0275デフォルトの名無しさん
2013/04/02(火) 23:50:50.89そのうちゴチャゴチャになって
freeしたメモリブロックをべつのソースモジュール内で再度freeしてしまう罠
0276デフォルトの名無しさん
2013/04/03(水) 19:40:26.92 if(ptr) {
free(ptr);
ptr = NULL;
}
みたいに書くといいよ。俺はしないけど
0277デフォルトの名無しさん
2013/04/03(水) 19:41:42.30if(ptr) {
free(ptr);
ptr = NULL;
}
0278デフォルトの名無しさん
2013/04/03(水) 19:49:50.780279デフォルトの名無しさん
2013/04/03(水) 20:42:48.36はなにもしないことが保証されている。
ISO/IEC 9899:1999 7.20.3.2.2
void free(void *ptr);
If ptr is a null pointer, no action occurs.
0280デフォルトの名無しさん
2013/04/03(水) 21:15:12.160281デフォルトの名無しさん
2013/04/03(水) 21:17:45.38♥
0282デフォルトの名無しさん
2013/04/03(水) 22:04:13.21それを先にfreeしてからptrをfreeするという手順を取るというときに
すでにptrがfreeされたものが与えられてしまってもぬるぽにならないように。
0283デフォルトの名無しさん
2013/04/03(水) 22:07:30.160284デフォルトの名無しさん
2013/04/03(水) 23:07:59.81nullpoになるわけないじゃん
0285デフォルトの名無しさん
2013/04/03(水) 23:14:39.60∧_∧
( ・∀・) | | ガガッ!
と ) | |
Y /ノ .人
/ ) .人 < >_∧∩
_/し' < >_∧∩`Д´)/
(_フ彡 V`Д´)/ / ←>>282
/ ←>>284
0286デフォルトの名無しさん
2013/04/04(木) 10:29:14.06malloc〜free malloc〜free と処理が分離されててptrを使い回すならわかるけど
malloc malloc 〜 free free みたいな状態でptrを使い回すってこと?
0287デフォルトの名無しさん
2013/04/04(木) 17:50:44.07char **ptr;
ptr = malloc(sizeof(char*) * 5);
for(i=0;i<5;i++){
ptr[i] = malloc(sizeof(char) * _MAX_PATH);
}
for(i=0;i<5;i++){
free(ptr[i]);
}
free(ptr);
こういう事じゃないの
0288デフォルトの名無しさん
2013/04/04(木) 17:52:24.94http://itpro.nikkeibp.co.jp/article/Watcher/20130331/467401/
0289デフォルトの名無しさん
2013/04/04(木) 18:21:23.84炎上学習法で得た知識はダメだな。www
未だに生きていてNULLをfreeしても良いとしていない規格がある。でも教えてやらない。www
0290デフォルトの名無しさん
2013/04/05(金) 05:19:37.34そんなマイナーな環境があるんだ‥‥というか、それってシステムコールを直呼びしているだけの手抜きライブラリだねえ
ま、アロケータはmalloc()/free()といえどもラッピングして使うようにしているから、問題ないけどね、1callぶんだけ手数とスタックがちょびっとだけもったいないけどね、ま、ちょびっとだけど
0291デフォルトの名無しさん
2013/04/05(金) 08:30:49.23> そんなマイナーな環境があるんだ
自分の知らない規格はマイナー wwww
炎上学習法にはのらない。教えてやらない。www
> それってシステムコールを直呼びしているだけの手抜きライブラリだねえ
システムコールを知らない事を自白しちまったな。wwww
死ねよクズ
0292デフォルトの名無しさん
2013/04/05(金) 08:48:39.060293デフォルトの名無しさん
2013/04/05(金) 10:37:46.850294デフォルトの名無しさん
2013/04/05(金) 10:48:57.500295デフォルトの名無しさん
2013/04/05(金) 22:41:37.37規格と実装をごっちゃにしてないか
0296デフォルトの名無しさん
2013/04/05(金) 22:57:30.450297デフォルトの名無しさん
2013/04/07(日) 11:26:10.01// 向き
enum MUKI {EAST,SOUTH,WEST,NORTH}は実質MUKI {0,1,2,3}とのことですが、
MUKUI muki_states;
muki_states = 1;みたいな演算って可能でしょうか?
0298デフォルトの名無しさん
2013/04/07(日) 11:30:35.32なんでやってみないの?
これからの人生、そういうスタンスで生きていくつもりなの?
0299デフォルトの名無しさん
2013/04/07(日) 11:31:41.460300デフォルトの名無しさん
2013/04/07(日) 11:32:53.21キャストすりゃいいんだな、調べたら分かったわ
お前らは用済み
0301デフォルトの名無しさん
2013/04/07(日) 11:34:36.27やさしく教えてくれんだろ
0302デフォルトの名無しさん
2013/04/07(日) 11:35:32.23これからの人生、そういうスタンスで生きていくつもりなの?
0303デフォルトの名無しさん
2013/04/07(日) 11:58:37.570304デフォルトの名無しさん
2013/04/07(日) 12:08:01.91ま、釣り針だろうけど
0305デフォルトの名無しさん
2013/04/07(日) 12:13:02.75ファイルから
0306デフォルトの名無しさん
2013/04/07(日) 12:33:07.31なるほど
ファイルにはコード化されたMUKIデータが入っていてそれを読み込むんだね
読み込んだ後に
int muki_states;
if(muki_states==1)
より
MUKI muki_states;
if(muki_states==SOUTH)
のほうが分かりやすかろうと
なるほど、なるほど。ありがとう
0307デフォルトの名無しさん
2013/04/07(日) 12:50:13.410308デフォルトの名無しさん
2013/04/07(日) 13:00:08.05> ファイルから読み込むと普通は文字列になるんだけど、
それは作り方次第(というか読み方次第?)。たとえばfscanfという関数があってだな…
0309デフォルトの名無しさん
2013/04/07(日) 13:14:02.33いきなりfscanfしちゃうの?
データの妥当性何かのチェックとかしない派?
0310デフォルトの名無しさん
2013/04/07(日) 13:29:36.19おいおい
文字列として読み込んで、妥当性チェックした後に変換だろ
sscanfでもstrtolでもいいが、俺はあまりsscanf の優位性を感じない
0311デフォルトの名無しさん
2013/04/07(日) 13:30:44.710312デフォルトの名無しさん
2013/04/07(日) 13:37:30.530313デフォルトの名無しさん
2013/04/07(日) 14:52:15.04ファイルから読み込むとき、普通は(まずは)文字列として読み込むんだけど、…
前と後では質問した人の知識背景がちがうよね
0314デフォルトの名無しさん
2013/04/07(日) 15:55:15.730315デフォルトの名無しさん
2013/04/07(日) 15:57:04.510316デフォルトの名無しさん
2013/04/07(日) 16:15:07.76fwrite,freadは場合によっては使うけど、まさかfscanfするなんて想像もしなかったからね
0317デフォルトの名無しさん
2013/04/07(日) 16:26:29.010318デフォルトの名無しさん
2013/04/07(日) 16:31:37.06まぁ「ファイルから読み込むと文字列になるw」という誤解をとくための例ならべつにいいんじゃん?
0319デフォルトの名無しさん
2013/04/07(日) 16:32:09.04#define SOUTH 1
...
にして
int muki_states としとけば muki_states=1 も muki_states=SOUTH も(*^ー゚)b
これじゃダメなん?て聞こうとしたけど、PCに戻ってみたら、すでに祭りは終わっていましたとさ (゜Д゜) メデタシ メデタシ
0320デフォルトの名無しさん
2013/04/07(日) 17:40:14.63いや…
それの例にfscanfなんて出すから、余計におかしくなっていると言う話じゃね?
0321デフォルトの名無しさん
2013/04/07(日) 17:42:41.420322デフォルトの名無しさん
2013/04/07(日) 18:10:01.670323デフォルトの名無しさん
2013/04/07(日) 18:33:19.84それなら直接enum変数に読めばいいよね。
態々int変数経由するまでもなく。
0324デフォルトの名無しさん
2013/04/07(日) 18:42:45.38ファイルには文字列で書いてあるだろう?
0325デフォルトの名無しさん
2013/04/07(日) 18:54:43.25> それなら直接enum変数に読めばいいよね。
いや、だからさ。
intでもenumでもfloatでもいいんだよ。ファイルから読み込むと文字列になる、と考えてる人に対して
文字列型以外で読み込むこともできるよ、ていう例なんだろうから。
>>324
>ファイルには文字列で書いてあるだろう?
お前は帰っていいよw
0326307,309
2013/04/07(日) 19:07:47.47君が言ってるのは多分俺のことだろうけど、俺も別にファイルを読むと必ず文字列になるなんて思ってないし、俺の他にも誰もそんな人いないから、見えない敵と戦う必要ないよ。
俺はただ単に、ファイルからデータを読み込む文脈で、int経由でenum変数に代入するなんてシチュエーションないだろって思っただけだから。
0327デフォルトの名無しさん
2013/04/07(日) 19:14:30.060328デフォルトの名無しさん
2013/04/07(日) 19:17:31.15>>307
0329デフォルトの名無しさん
2013/04/07(日) 19:23:18.490331デフォルトの名無しさん
2013/04/07(日) 19:32:31.80カオスになっててワロタ
0332デフォルトの名無しさん
2013/04/07(日) 19:33:30.660333デフォルトの名無しさん
2013/04/07(日) 19:37:05.97自演っぽいのもいるからユニーク・ビジター数は案外少ないかもな
0334デフォルトの名無しさん
2013/04/07(日) 19:38:35.440335デフォルトの名無しさん
2013/04/07(日) 19:45:34.91> >>328
> ん?
> その>>307が俺なんだけど。
だから自分が >>307 で書いた文章を深呼吸して落ち着いてからよく読め って意味じゃないの?
ファイルから読み込むと文字列になるって自分で書いてんじゃんw
0336デフォルトの名無しさん
2013/04/07(日) 19:48:45.90落ち着いて読むも何も、俺がファイルを読んだら必ず文字列になるなんて思ってないから、見えない敵と戦わなくていいんだよってことで。
0337デフォルトの名無しさん
2013/04/07(日) 20:02:35.02ま、これが落としどころ、ということで
327はタイミングが悪かったね〜 これに懲りずに、またいらっしゃい
0338デフォルトの名無しさん
2013/04/07(日) 20:07:43.070339デフォルトの名無しさん
2013/04/07(日) 20:19:22.86まぁ、楽しめたんじゃないの?
0340デフォルトの名無しさん
2013/04/07(日) 20:42:46.810341デフォルトの名無しさん
2013/04/07(日) 20:47:04.53> さっきから一生懸命に終わらそうとしている奴はなんなの
自分に不利な議論の流れだから。当然しょっw
0342デフォルトの名無しさん
2013/04/07(日) 20:54:51.190343デフォルトの名無しさん
2013/04/08(月) 00:13:52.32>>319
#defineのアイデア
ソースの可読性という点においては大差なさそうだけど、
enum型には規定された値以外の使用(代入等)をコンパイル時にチェックできる、という利点がありますね。
なのでenumのほうが多少はメリットがあるんじゃないでしょうか。
(ご本人抜きにして部外者がプログラムの仕様を語っても仕方ないですが)
>>336
> 落ち着いて読むも何も、俺がファイルを読んだら必ず文字列になるなんて思ってないから、
最初に、ファイルから読み込むと普通は文字列になる、って自分で書いてますよねw
物忘れが激しいタイプ?揮発性メモリ?
荒れた原因を作った真犯人が、見えない敵と戦わなくていい、とか、ほとんど人事不省ですかねw
その上にデータの妥当性チェックに話をすり替えるから、ますます流れがおかしくなったんですね。
0344デフォルトの名無しさん
2013/04/08(月) 00:24:12.46普通は文字列になるということは、文字列にならない場合もあるということ。
妥当性チェックの話は、それがfscanfを使ってはいけない理由だから。内容が保証されているバイナリデータをfreadで読み込む場合以外では、普通は文字列として読み込んで、パーズしてバリデーションだよね。
0345デフォルトの名無しさん
2013/04/08(月) 12:28:50.280346デフォルトの名無しさん
2013/04/08(月) 12:46:56.71バイナリなら中身が保証されているなんて言ってないよ。
内容が保証されているバイナリデータなら、freadで読む場合もあるって書いてるでしょ。
それにテキストが駄目なんて書いてないし。
テキストファイルをfscanfで読むのが駄目だって書いてるだけだし。
ちゃんと読んでくれよ。
0347デフォルトの名無しさん
2013/04/08(月) 13:13:45.510348デフォルトの名無しさん
2013/04/08(月) 13:32:19.85内容が保証されているテキストファイルもfscanfしていいよね
0349デフォルトの名無しさん
2013/04/08(月) 13:46:44.00fscanf()は、scanf()とよく似た致命的な欠陥があって、「完全に正しい」とは限らないテキストファイルの読み込みには向いてないの。
で、普通はどうするかというと、1行毎あるいはファイル全体を文字列として読み込んで、parseしてvalidationしてから変数に保存する。
それが安全なやり方。
0350229
2013/04/08(月) 13:55:01.80「完全に正しい」とは限らないバイナリファイルの読み込みには向いてないな。
0351デフォルトの名無しさん
2013/04/08(月) 13:57:23.32man freadして、向いてるか向いてないか自分で考えろ
0352デフォルトの名無しさん
2013/04/08(月) 14:18:42.300353デフォルトの名無しさん
2013/04/08(月) 16:57:55.85Destroy(object);
みたいな感じでデストラクタを好きなタイミングで呼び出す関数を定義することってできますか?
既に上記のような関数が存在してればその関数でも構わないのですが…。
0354デフォルトの名無しさん
2013/04/08(月) 16:59:56.84一旦スルーしてください…。
0355デフォルトの名無しさん
2013/04/08(月) 17:08:09.160356デフォルトの名無しさん
2013/04/08(月) 19:39:17.350357デフォルトの名無しさん
2013/04/09(火) 12:57:44.03そういうハイルを読み書きするときには決まったサイズを保存する型って
どうしたらいいですか。
0358デフォルトの名無しさん
2013/04/09(火) 13:18:51.530359デフォルトの名無しさん
2013/04/09(火) 13:23:51.24short [], usort [], int16_t []など
0360デフォルトの名無しさん
2013/04/09(火) 14:54:43.50ありがとうございまする。
後ろについているカッコはなんですか?
shortはintより短いことを保証するに過ぎませんよね。
int16_tが正解ですか?
さようならば。
0361デフォルトの名無しさん
2013/04/09(火) 15:10:03.19[]は配列。
複数の連続した16ビットのデータを読み書きすると思って配列にしただけなので、そうでなければ無視してくれ。
0362デフォルトの名無しさん
2013/04/09(火) 20:07:16.230363デフォルトの名無しさん
2013/04/09(火) 21:10:54.11select<sizeof(char) == 2, char,
select<sizeof(short) == 2, short,
select<sizeof(long) == 2, long, void>::type>::type>::type>::type int16_t;
0364デフォルトの名無しさん
2013/04/09(火) 23:22:07.170365デフォルトの名無しさん
2013/04/25(木) 11:44:49.760366デフォルトの名無しさん
2013/04/25(木) 21:23:08.85unsigned double
0367デフォルトの名無しさん
2013/04/26(金) 07:32:57.44ことにしてしまいたくなる
0368デフォルトの名無しさん
2013/04/26(金) 23:18:17.12CHAR_BITが16かもしれない
0369デフォルトの名無しさん
2013/04/26(金) 23:19:18.65脊髄反射はダメだなやっぱ
0370デフォルトの名無しさん
2013/04/27(土) 00:28:17.14>>363 じゃ不十分なんだけどね
0371デフォルトの名無しさん
2013/04/27(土) 00:31:14.220372デフォルトの名無しさん
2013/04/28(日) 14:18:43.570373デフォルトの名無しさん
2013/04/29(月) 20:36:55.45cppに関数を継ぎ足すたびにhを編集して・・・とやっていけばいいのでしょうか。ものすごく間違えそうで危ない気がするのですが。
0374デフォルトの名無しさん
2013/04/29(月) 20:53:01.03はずかしいところはcppに書く
0375デフォルトの名無しさん
2013/04/30(火) 16:42:32.78間違えるとコンパイラが教えてくれるから危ないことなど全くない
0376デフォルトの名無しさん
2013/05/01(水) 15:19:32.18.hは目次、.cppは本文と思えば分かりやすいんじゃないかな。
先に.hを書いて、.cppは後で書く。
0377デフォルトの名無しさん
2013/05/01(水) 17:42:53.36テストまでやってから公開って考え方
0378デフォルトの名無しさん
2013/05/01(水) 18:27:09.99.cpp に合わせて .h を編集ってことはあまり無いなあ
0379デフォルトの名無しさん
2013/05/03(金) 02:07:25.68書くんじゃない?
0380デフォルトの名無しさん
2013/05/03(金) 02:49:05.09趣味のプログラムなら勝手だが。
0381デフォルトの名無しさん
2013/05/03(金) 03:12:26.67ビルドすること無しに.cppを書き続けるのか?
0382デフォルトの名無しさん
2013/05/03(金) 11:11:56.22週一とか
0383デフォルトの名無しさん
2013/05/04(土) 00:23:49.310384デフォルトの名無しさん
2013/05/04(土) 00:54:43.09ビルドエラーや実行時エラーに頼ったコーディングスタイル、
設計や机上デバッグを軽視している輩が増えているような
気がする。
0385デフォルトの名無しさん
2013/05/04(土) 01:21:39.53もうずっと前からビルド時間なんて気にならなかったが
0386デフォルトの名無しさん
2013/05/04(土) 02:29:02.20もったいないので無闇にビルド→書き換えをしないよう設計と机上デバッグを煮詰める。
0387デフォルトの名無しさん
2013/05/05(日) 08:19:06.89組み込みのこと全然知らないんだけど、書き込みせずにテストは出来ないの?
0388デフォルトの名無しさん
2013/05/05(日) 08:27:21.10SDカードに入れたデジカメの画像は大切ならBD-REに焼いとけよ
0389デフォルトの名無しさん
2013/05/05(日) 13:18:27.53「ROMだってランダムアクセスできるんだから、そういう意味ではRAMじゃないの?」
とのたまう、素直で内気な少年でした… 今から○十年前の話です。
0390デフォルトの名無しさん
2013/05/05(日) 14:48:55.02その頃から既に屁理屈っぽい萌芽が育ち始めていたんだろうね
0391デフォルトの名無しさん
2013/05/05(日) 15:46:17.91環境によるんじゃね?
だからこそ、環境がどうであろうが実施できる机上デバッグなんだと思う
0392デフォルトの名無しさん
2013/05/05(日) 18:33:04.84ICEで確認してからだな
0393デフォルトの名無しさん
2013/05/05(日) 23:17:52.35律儀に RWM とか書いてたな…
0394デフォルトの名無しさん
2013/05/06(月) 08:49:38.730395デフォルトの名無しさん
2013/05/06(月) 09:07:35.97あら傷ついちゃったの?www
0396デフォルトの名無しさん
2013/05/07(火) 11:07:39.34> >>389
> 律儀に RWM とか書いてたな…
初めて知ったけど、これってなんて読むの?リウォム?リワォム?
0397デフォルトの名無しさん
2013/05/07(火) 23:19:37.70「ロム」みたいな言い方ができなかったのも、流行らなかった理由かも。
0398396
2013/05/08(水) 00:18:54.08たしかに、こりゃ一文字ずつ読むしかないですよねw レス、ありがとう!
なんとなく WORM (Write Once, Read Many)を思い出すなぁ。。。
0399デフォルトの名無しさん
2013/05/08(水) 19:27:35.780400デフォルトの名無しさん
2013/05/08(水) 19:57:58.150401デフォルトの名無しさん
2013/05/08(水) 20:15:36.49識別子(?)として「RED」「GREEN」「BLUE」を使いたい。割り当てられる値はどうでもいいって時に
#define RED 1
#define GREEN 2
#define BLUE 3
とするより、
enum color { RED , GREEN , BLUE };
した方がいいか、って質問だろ?
答えはYES。
使い方によるがenumなら値の妥当性チェックをしてくれるから。
0402401
2013/05/08(水) 20:22:02.07#define RED 0
#define GREEN 1
#define BLUE 2
に差し替えてくれ
0403デフォルトの名無しさん
2013/05/08(水) 20:42:55.650404デフォルトの名無しさん
2013/05/08(水) 21:23:07.53それよりもスコープの問題の方がでかいね
0405399
2013/05/08(水) 21:45:52.70ありがと
そう言いたかった
#defineは全部enumに直すよ
0406デフォルトの名無しさん
2013/05/09(木) 00:09:03.32どういうこと?
0407デフォルトの名無しさん
2013/05/09(木) 00:14:48.900408デフォルトの名無しさん
2013/05/09(木) 01:16:31.800409デフォルトの名無しさん
2013/05/09(木) 01:20:39.03typedef enum{...} E;
void f(E e){}
f(10); // compile error
0410デフォルトの名無しさん
2013/05/09(木) 02:07:27.30void f(enum E e){}
でいいじゃんtypedef関係ないよね
そもそもCではエラーにならないし
C++でエラーになるのは「値の妥当性チェック」じゃなくて単純に型によるもの
0411デフォルトの名無しさん
2013/05/09(木) 12:10:36.05この名前使うの?
0412デフォルトの名無しさん
2013/05/09(木) 12:16:53.28他の人間にコードの説明するときに使う
0413デフォルトの名無しさん
2013/05/09(木) 12:42:29.220414デフォルトの名無しさん
2013/05/09(木) 15:43:11.89> enumのあとになんで名前をつける必要があるの?
> この名前使うの?
列挙型の定義と変数宣言を別に行う際に使える。
※この名前をタグ名と呼ぶよ。
enum ScreenColor {RED, GREEN, BLUE};
enum ScreenColor color;
定義と変数宣言を同時に行うなら省略可能だよ。
enum {RED, GREEN, BLUE} color;
ちなみに別途、
enum PrintColor {CYAN, MAGENTA, YELLOW, KEYPLATE};
という定義があっても
color = CYAN;
と代入するコーディングミスはチェックできる。
ScreenColor型変数のcolorにCYANは有効じゃないから。
0415デフォルトの名無しさん
2013/05/09(木) 20:03:04.58playsound関数についてなんですが、
プログラム起動時に.wav形式のものを再生したいのです。
リソースからひっぱってきて再生する形にしたいのですが、
どうもうまくいきません。playsound関数など調べても
いまいち自分がやりたいのと大きく違って、あまり参考にはなりませんでした
そして、ON/OFFを切り替えることができるボタンなども、自分なりに探しましたが
探すのが下手らしくあまり参考にはならなかったです。
もしよろしければ、サンプルソースコードを書いていただけると嬉しいです。
もしくは、上記のヒントや方法などを教えて下さい。
(C++でフォームを使用するものです)
0416片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/09(木) 20:20:23.96#include <windows.h>
int main(void){
PlaySound("SOUND1", GetModuleHandle(NULL), SND_SYNC|SND_RESOURCE);
return 0;
}
//PlaySound.rc
SOUND1 WAVE "sound1.wav"
0417片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/09(木) 21:08:48.87GetModuleHandle(NULL)の代わりにWinMainのhInstanceを使ってもいい。
0418デフォルトの名無しさん
2013/05/09(木) 21:21:46.92>>417さん
すいません、先に言うのを忘れていましたが、私初心者に近いので
ソースコードの詳細利用方法があまりわかりませんでした。
すいません。
また別のスレに移動します。
ソースコード、情報提供 誠に感謝します。
0419片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/09(木) 21:51:34.07<windows.h>をインクルードしておき、PlaySound APIを呼べば音が鳴る。フォームを使ってる場合でも同じ。
0420デフォルトの名無しさん
2013/05/09(木) 22:39:22.99http://toro.2ch.net/test/read.cgi/tech/1368020285/
強制IDの導入議論を行っています。
0421デフォルトの名無しさん
2013/05/09(木) 23:01:43.67staticにしないと初期化出来ませんか?
0422デフォルトの名無しさん
2013/05/09(木) 23:11:09.990423デフォルトの名無しさん
2013/05/09(木) 23:19:48.040424デフォルトの名無しさん
2013/05/09(木) 23:24:04.060425デフォルトの名無しさん
2013/05/09(木) 23:47:07.72メンバ初期化子
でもあまりconstメンバ変数は使わない
0426デフォルトの名無しさん
2013/05/12(日) 03:37:57.97どうすればいいんでしょうか。
0427デフォルトの名無しさん
2013/05/12(日) 03:51:35.25スコープ外、例えば関数を読んだ先で使いたければ、
呼び元で必要な変数群を構造体で用意しそのポインタを渡す
0428デフォルトの名無しさん
2013/05/12(日) 11:02:05.68Cなんぞ使うべきではない
なぜならC言語そのものが危険だから
・・・あれ、Cの話だっけ?
0429デフォルトの名無しさん
2013/05/12(日) 11:05:26.57そういう意味では確かに危険
0430デフォルトの名無しさん
2013/05/12(日) 14:02:12.02グローバル変数とローカル変数と動的確保は適材適所。
どれがよくてどれが悪いという話ではない。
一般論としてグローバル変数は少ないほどいいというだけ。
0431デフォルトの名無しさん
2013/05/12(日) 20:50:58.76ほかにもGOTOを諸悪の根源とする原理主義者たちとかw いそうだねぇ
0432デフォルトの名無しさん
2013/05/12(日) 22:05:23.470433デフォルトの名無しさん
2013/05/12(日) 22:12:25.890434デフォルトの名無しさん
2013/05/12(日) 22:29:48.04#include <stdio.h>
int main(void){
int water = 198;
int milk = 138;
double tax = 1.05;
int pay = 1000;
int change;
printf("%d", pay- (int)(tax * (water + milk * 2)));
return 0;
}
これは汚いプログラムですか?
友人に聞いたら、先に宣言をまとめてしてしまったほうがいいと言われたのですが、よくわかりません。
回答よろしくお願いします。
0435デフォルトの名無しさん
2013/05/12(日) 22:56:26.09これだと見ただけでは何がしたいのか分かりづらいというか分からないですね。
全部宣言し、各商品の値段を出し、何を答えとして出すっていう分かりやすい順序を
作ったほうがいいということなんでしょうか。
一応自分で改善案をつくってみました。
#include <stdio.h>
int main(void){
int water,milk,pay,sum,change;
double tax;
water = 198;
milk = 138;
pay = 1000;
tax = 1.05;
sum = (int)((water + milk * 2)* tax);
change = pay - sum;
printf("%d",change);
}
どちらが理想に近いプログラムですか?
0436デフォルトの名無しさん
2013/05/12(日) 23:50:40.44例えば多重ループの中から抜けたいとき
for() {
for() {
for() {
〜
if() goto LoopExit;
}
}
}
LoopExit:
gotoなしで書くとフラグと複数breakの組み合わせになると思うが
それよりもいっきにジャンプしたほうがシンプルで分かりやすくないだろうか?
「goto=悪」を金科玉条とするんじゃなくて、
要するに使い方(プログラマの思想?)次第じゃない?
0437デフォルトの名無しさん
2013/05/13(月) 01:29:19.43考え方による。正解はない。
とにかく冗長でも分かりやすい記述を好む派と、簡潔で少ない行数であることを好む派がいる。
ちなみに前者の書き方は関数型言語に近いから前者の思考で書きたければそっちも勉強した方がいいかもしれん。
その書き方専用の定石というのも存在する。
0438デフォルトの名無しさん
2013/05/13(月) 01:41:02.33最初にまとめて宣言するのはC89的な古くさいプログラムで、C++ではナシだな
「変数が初期化されていない」期間は
できるだけ短い方がバグが入りにくい
例外的なものは全体的に使い回す変数かな
その場合は初めて使う時に宣言すると、
その処理をやっぱ2番目に置こうと思った時に不便
0439デフォルトの名無しさん
2013/05/13(月) 01:42:00.54基本的にそういう場合は関数に分けた方がいい
で、returnで抜ける
ただ、gotoの方がいい場合もあるので100%関数にした方がいいとは言わない
0440デフォルトの名無しさん
2013/05/13(月) 07:49:01.60そのための大域脱出=try-catch-throw ですよと
0441デフォルトの名無しさん
2013/05/13(月) 08:20:07.670442デフォルトの名無しさん
2013/05/13(月) 08:58:33.12チョコチョコ使う分にはむしろ直感的で読みやすいソースになる。
0443デフォルトの名無しさん
2013/05/13(月) 09:00:54.86> >>436
> 基本的にそういう場合は関数に分けた方がいい
syori();
---------
void syori()
{
for() {
for() {
for() {
〜
if() return;
}
}
}
return;
}
動くだろうけど、これが基本とは思わないな
関数コールのオーバーヘッドと引き替えにどういう利点がある?
0444デフォルトの名無しさん
2013/05/13(月) 09:15:05.120445デフォルトの名無しさん
2013/05/13(月) 09:18:43.44#今の若い人は知らないだろうな
I/OやASCIIでPascalが流行った時期があったよ
オヤジの懐古趣味w すまんね
http://ja.wikipedia.org/wiki/%E6%A7%8B%E9%80%A0%E5%8C%96%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0#goto.E8.AB.96.E4.BA.89
0446デフォルトの名無しさん
2013/05/13(月) 12:28:33.47グローバル変数 を使わない馬鹿 そればかり使う馬鹿
C言語 を使わない馬鹿 そればかり使う馬鹿
0447デフォルトの名無しさん
2013/05/13(月) 16:03:01.09やりすぎはコードの見通しを悪くする
0448デフォルトの名無しさん
2013/05/13(月) 19:03:55.82仕事上、Cを使わざるを得ない、とか、(ほかの言語を使うから)Cを使う必要がない、って人もいるかもよw
0449デフォルトの名無しさん
2013/05/13(月) 20:48:14.040450デフォルトの名無しさん
2013/05/13(月) 20:49:50.99ループがそれほどあるだけで
普通は結構な行数だろ
短いなら別にgotoでもいいけど、
大抵は関数に分けた方がいい場合が多い
0451デフォルトの名無しさん
2013/05/13(月) 21:17:07.880452デフォルトの名無しさん
2013/05/14(火) 01:04:04.68環境によっては、無駄な関数コールを減らすことを考えざるを得ないこともある。
RAMが256byteしかないとか
0453デフォルトの名無しさん
2013/05/14(火) 07:38:22.890454デフォルトの名無しさん
2013/05/14(火) 07:49:50.520455デフォルトの名無しさん
2013/05/14(火) 08:04:22.16素直にgoto使ったんでいいんじゃないかと思う時はある
0456デフォルトの名無しさん
2013/05/14(火) 09:23:01.15スキルの低いうちは封印した方がいい
0457デフォルトの名無しさん
2013/05/14(火) 09:48:17.250458デフォルトの名無しさん
2013/05/14(火) 11:17:16.540459デフォルトの名無しさん
2013/05/14(火) 12:02:47.58すべてのプログラムは、連接、分岐、繰り返し、の三要素で必ず表現できるんだっけ?
えーっと なんの定理だっけ?
まぁ論理的に可能というだけで、
必ずしも見通しのよいコードになるとは限らないと思うけど
0460デフォルトの名無しさん
2013/05/14(火) 12:09:15.58gotoを使ったほうが見通しが良くなる場合もある
0461デフォルトの名無しさん
2013/05/14(火) 12:46:34.88// gotoを使ったほうが見通しが良くなる場合もあるので
というコメントを残しておけば、引き継いで保守する人も納得する。
納得されなかったらム板かマ板のコメントスレにあげられる。
0462デフォルトの名無しさん
2013/05/14(火) 13:45:57.58そんなコメントいらんわ
0463デフォルトの名無しさん
2013/05/14(火) 20:15:39.400464デフォルトの名無しさん
2013/05/14(火) 20:30:38.47goto肯定派は、何でもかんでもgotoでやりたい、と主張している「わけではない」のに
goto否定派は、gotoなんか不要だ、使う必要は全くない、という主張になっていることが多そうな気がする
この温度差はいったい何なんだろうって思うよ
0465デフォルトの名無しさん
2013/05/14(火) 20:52:04.14ラベル付き break であれば温度差は解消される
ラベル付きbreak‥‥‥これって goto?
0466デフォルトの名無しさん
2013/05/14(火) 21:01:15.750467デフォルトの名無しさん
2013/05/14(火) 21:56:56.61個人的には容認かな。setjmp / longjmpのほうがいやらしい。
0468デフォルトの名無しさん
2013/05/15(水) 00:53:45.95goto-free で縛ればそんなことを「一切」気にしなくて済む
0469デフォルトの名無しさん
2013/05/15(水) 08:03:16.94使われてそうなbreakよりもしかして見落としにくいんじゃね?
0470デフォルトの名無しさん
2013/05/15(水) 08:25:36.96ただ、馬鹿に使わせるととんでもないことになるから信用できない奴には使わせたくないってだけで。
0471デフォルトの名無しさん
2013/05/15(水) 09:13:50.450472デフォルトの名無しさん
2013/05/15(水) 09:26:40.57C++11はまだ
ただし他のいらない規格票もたくさん入っていて分厚い本の一部
1万前後だったかなあ
0473デフォルトの名無しさん
2013/05/18(土) 14:13:52.83WIN32_FIND_DATA構造体にセットされる値を読みに行っていますが、セットされる値は
キャッシュされるようでして、頻繁にファイルのタイムスタンプが更新される場合には
使えません。FindFirstFileでヒットしたファイル名を用いて、stat 関数なども使ってみましたが
状況は同じでした。このキャッシュをクリアする方法を教えてください。
Windows7上で動く、ネイティブコードのコンソールアプリです。
よろしくお願いします。
(マネージコードですと、Refresh()というメソッドが使えるようなのですが・・・)
0474デフォルトの名無しさん
2013/05/18(土) 14:16:23.12デバッグビルドしました場合は、キャッシュされず、毎回最新のタイムスタンプが
取得できるのですが、リリースビルドしました場合にはキャッシュされた値しか
取得できないという状況です。
0475デフォルトの名無しさん
2013/05/18(土) 14:18:33.680476デフォルトの名無しさん
2013/05/18(土) 14:30:27.28http://d.hatena.ne.jp/satosystems/20110517/1305585726
0477474
2013/05/19(日) 21:12:18.74情報ありがとうございました。キャッシュされているようだと断言して
いましたが、結局私の環境ではキャッシュが原因ではなく、FindFirstFileの
誤動作(仕様?)が原因でした。
FindFirstFileで検索するファイルが置かれているパスは、かなり深い階層の
フォルダにありまして、検索用の文字列としてとても長い文字数のものを
指定していました(恐らくMAX_PATH数を超える文字数)。その結果、ヒットした
ファイルそのもののタイムスタンプではなく、そのファイルが置かれているフォルダの
タイムスタンプがWIN32_FIND_DATA構造体にセットされていました。
教えて頂いたGetFileTimeでも、引数にファイル自体のパス名を与えているのに
フォルダのタイムスタンプが取得されました。
(ただし、デバッグビルドした場合はヒットしたファイル自体のタイムスタンプが
とれていました)
0478474
2013/05/19(日) 21:12:58.95文字列ももっと短くて済むようにしてみました。その結果、きちんと検索で
ヒットしたファイル自体の最新のタイムスタンプがセットされるようになりました。
(デバッグビルド、リリースビルド双方とも)
MAX_PATH数を超える文字数を引数に与えていたと思いますので、FindFirstFile
の使い方の間違いだとは思いますが、それではデバッグビルドしても同様の動きを
してくれれば、それこそもっと早くデバッグできたと思いますのに、デバッグビルドした
やつを使ったら、かえってデバッグの障害になったという顛末でした。
0479デフォルトの名無しさん
2013/05/22(水) 21:49:37.28普通にstaticとどう違うの?
0480デフォルトの名無しさん
2013/05/22(水) 21:53:52.38ただのstaticメンバ変数だと、複数のシングルトン間の初期化の順番が仕様で未規定
0481デフォルトの名無しさん
2013/05/22(水) 22:02:00.08シングルトンのが響きがかっこいい
0482デフォルトの名無しさん
2013/05/22(水) 22:04:59.46複数のstaticメンバ変数間の、だわ
シングルトンだと初期化順は取得した順
相互に使うようなものでも、コンストラクタでお互いを使わない限りは問題ない
0483デフォルトの名無しさん
2013/05/22(水) 22:48:46.320484デフォルトの名無しさん
2013/05/23(木) 22:29:09.40Microsoftが作ったの?
0485デフォルトの名無しさん
2013/05/23(木) 22:30:56.400486片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/23(木) 22:58:12.250487デフォルトの名無しさん
2013/05/23(木) 23:45:30.34リッチーは故人になってしまったし、J・マッカーシーも同時期に鬼籍に入ったんだっけ。
C・シャノンなんて歴史上の人物と思っていたけど21世紀になって他界したんだよなぁ。
0488デフォルトの名無しさん
2013/05/24(金) 00:14:57.77などで作った?定義した?変数には最初なんの数字が入っているのでしょうか?
#include<stdio.h>
int main(void){
int a;
printf("%d",a);
retrun 0;
}
を実行すると2883044という数字が出てきますが、この数字はなんなのでしょうか?
0489デフォルトの名無しさん
2013/05/24(金) 00:21:13.80まあ大体の環境は変数の領域を確保した際に
たまたまそのメモリに残っていた値だな
0490デフォルトの名無しさん
2013/05/24(金) 00:55:45.340491デフォルトの名無しさん
2013/05/24(金) 01:58:57.01変数を作る、というのは概念的な話で
実際はメモリのどっかの部分に名前を付けただけなんだよ。
だから、たまたまその部分にあった値が入ってる。
でもコード、コンパイラ、リンカ、システム共に同じなら
毎回別の値が出たりすることはあんまり無いと思う
コンパイラやリンカ、システムごとのメモリの扱い方の癖がそこに出てくる感じ
コードをちょっと弄ると別の値が出たりするからやっぱアテにしちゃダメだけどね
0492デフォルトの名無しさん
2013/05/24(金) 07:10:17.09このプログラムなら別の値が出る事は少ないだろうけど
現実的なプログラムだと大抵別の値が出るぞ
0493デフォルトの名無しさん
2013/05/24(金) 07:47:40.32そうか…現実的なプログラムだとまず試さないからな…
0494デフォルトの名無しさん
2013/05/24(金) 09:49:49.31外部変数とstatic変数は初期値ゼロが保証されていて
それ以外の場合は不定じゃなかったっけ?
ちなみにauto変数は記憶域がスタック上に割り当てられるんで
そこのゴミが入ってくるような気がします。
(*1)
JISCでオンラインで規格書を閲覧しようとしたらAcrobatのバージョンを更新しろとポップアップが。
すでに最新バージョンにしとるのにどうしろと? (`へ´)凸
0495484
2013/05/24(金) 12:06:48.09結局、C言語の権利はどこが持ってるの?
0496デフォルトの名無しさん
2013/05/24(金) 12:37:11.01ランタイムライブラリの権利は各実装者が持ってる
0497デフォルトの名無しさん
2013/05/24(金) 14:18:50.93権利って著作権のことか?
あるプログラム言語で書かれたプログラムは著作権の対象になるが
プログラム言語自体が著作権対象になるかは知らん
小出しに質問してるけどいったい何が聞きたいの?
0498デフォルトの名無しさん
2013/05/24(金) 15:20:55.58まあまず何を聞きたいか具体的にしないといかんな
0499デフォルトの名無しさん
2013/05/24(金) 17:59:12.76言語自体もプログラムだろ
0500デフォルトの名無しさん
2013/05/24(金) 18:04:58.05言語仕様のことだろ
0501デフォルトの名無しさん
2013/05/24(金) 18:55:13.590502デフォルトの名無しさん
2013/05/24(金) 21:54:35.65singletonの話なら、static変数は普通ポインタだよ。
0503デフォルトの名無しさん
2013/05/25(土) 07:14:34.07>J・マッカーシーも
10代の頃例の言語の卓越したアイディアに神をみた、というか20年たってこの歳になっても理解がまだまだおよばない可哀相な状態です。
>C・シャノンなんて歴史上の人物と思っていたけど21世紀になって他界したんだよなぁ。
ダイクストラも。
0504デフォルトの名無しさん
2013/05/25(土) 15:42:23.56わりと近年の言語かと思っていたけど、2番目に古い高級言語だったとは (゜Д゜)ポカーン
コンピュータサイエンスが20世紀中頃から勃興した学問だから
その頃に活躍された先生や技術者が、最近になって亡くなるのは
淋しいけど歴史の流れだよね… (ノД`)
0505495
2013/05/25(土) 16:12:52.40JavaだったらSunMicrosystemsだと思うけど
C言語は本当にどこにもないの?
0506デフォルトの名無しさん
2013/05/25(土) 17:21:30.440507デフォルトの名無しさん
2013/05/25(土) 17:32:11.01プログラミング言語の言語仕様を指して権利うんぬん、と言ってるのなら著作権の概念はないらしい。
http://oshiete.goo.ne.jp/qa/7862358.html
仮にもし、誰かが権利を主張するとしたら、リッチーの在籍していたベル研になると思う。
ところでなんでC言語の権利を気にしているの?
0508デフォルトの名無しさん
2013/05/25(土) 21:17:51.74まず「C言語の権利」が何を指してるか明確にしろってば
著作権じゃないんだろ?
0509デフォルトの名無しさん
2013/05/25(土) 21:22:49.48Sunを買い取ったOracle様がJavaのAPI仕様自体(API仕様書や実装ではない)に
権利主張してたよね。Androidの仕様を訴えてたあれ。
そんなもは認められないはずだけど、まだ完全には解決していないはず。
0510デフォルトの名無しさん
2013/05/25(土) 23:15:51.03http://sourceforge.jp/magazine/12/06/03/2329238
0511デフォルトの名無しさん
2013/05/25(土) 23:25:45.790512デフォルトの名無しさん
2013/05/26(日) 01:27:23.09強いて言えば規格を策定してるANSIのものとも言えるけど、それでも実装は個々のコンパイラ任せだし。
結局、C言語のコンパイラにはそれぞれ作者がいて権利を有してるけど、C言語そのものを持っている人は存在しない、ということになる。
0513デフォルトの名無しさん
2013/05/26(日) 02:20:12.14・言語仕様に著作権はない
・アルゴリズムに著作権はない
・コードに著作権は有る
・ドキュメントに著作権は有る
apiの仕様そのものに対する著作権はわからんが
apiのインターフェイスを記述したコードがあるならそのapiには著作権が発生する
当然第三者が勝手に利用したらアウト
0514デフォルトの名無しさん
2013/05/26(日) 07:55:09.87GIF はアルゴリズム特許で問題が勃発したよね
0515デフォルトの名無しさん
2013/05/26(日) 08:14:19.13足し算や、足し算の記述に誰かの物なんて権利はあるか?ないだろ
それが当たり前なんだよ数学も物理もすべて神様が創造して、人間に与えたものだ
人間が新たに発明したから独占しようなどと考えるのはおこがましい
すべての知識は平等に誰からも利用されるものだ
足し算が独占できないように、少し複雑化しただけの他の知識も独占なんかしてはならないんだよ
0516デフォルトの名無しさん
2013/05/26(日) 08:24:55.92事実と理想が混同されてる
0517デフォルトの名無しさん
2013/05/26(日) 08:35:31.080518デフォルトの名無しさん
2013/05/26(日) 09:35:47.060519デフォルトの名無しさん
2013/05/26(日) 10:19:18.660520デフォルトの名無しさん
2013/05/26(日) 10:23:44.96ソフトに欠陥があってもメーカーとして免責されるという状況には疑問だな
*PL法でカヴァーできないならソフトウェア専用の法律を整備すべきだ
メーカーとして権利(著作権)を主張するなら、メーカーとしての義務(責任)も果たせよ、と言いたい
0521デフォルトの名無しさん
2013/05/26(日) 10:37:56.380522デフォルトの名無しさん
2013/05/26(日) 11:05:58.710523デフォルトの名無しさん
2013/05/26(日) 20:23:49.75Cの参考書でも書くつもりなんかな
プログラミング言語の権利を気にする、その理由に興味があるな。 煽りじゃなくて、さ
0524デフォルトの名無しさん
2013/05/26(日) 20:53:55.710525デフォルトの名無しさん
2013/05/26(日) 21:18:54.860526デフォルトの名無しさん
2013/05/26(日) 22:07:46.59俺も法学部だったけどあの訊き方じゃそれは無い。
法学部で重視するのは「誰か」じゃなく「どんな権利か」だし、C言語だけにこだわる理由もない。
0527デフォルトの名無しさん
2013/05/26(日) 22:47:07.32> C言語だけにこだわる理由もない。
C以外のの言語には 【こだわってない】 という証拠は?
0528デフォルトの名無しさん
2013/05/26(日) 23:28:59.15他の言語スレをひと通り見てきて同じ質問がされていたかを見てくれは済むんじゃない?
別に俺の言いたいことはそこじゃないからこだわっていようがいなかろうがどうでもいいけど。
0529デフォルトの名無しさん
2013/05/26(日) 23:40:56.620530デフォルトの名無しさん
2013/05/26(日) 23:41:59.97誰が権利を所有しているのか、も当然、重視される事柄だが. 本当に法学部?
0531デフォルトの名無しさん
2013/05/27(月) 00:51:30.52もう許してやれ
0532デフォルトの名無しさん
2013/05/27(月) 02:27:10.79その「誰が」ってのはあくまで概念上の話であって、具体的にCがどうのJAVAがどうのって話はしないよ。
ましてや権利の種類すら明らかにせず訊くなんてことは有り得ない。
少なくとも法学部のやる法学なら100%そう。
0533デフォルトの名無しさん
2013/05/27(月) 07:09:35.66http://cansecwest.com/slides/2013/DEP-ASLR%20bypass%20without%20ROP-JIT.pdf
0534デフォルトの名無しさん
2013/05/27(月) 11:31:54.68全てデニスリッチーが作ったの?
0535デフォルトの名無しさん
2013/05/27(月) 11:44:37.940536デフォルトの名無しさん
2013/05/27(月) 11:45:44.560537デフォルトの名無しさん
2013/05/27(月) 12:06:56.530538デフォルトの名無しさん
2013/05/27(月) 12:08:59.060539デフォルトの名無しさん
2013/05/27(月) 12:32:26.06C言語のみなの?
0540デフォルトの名無しさん
2013/05/27(月) 13:05:50.03ケントンプソンだってチューリング賞をもらってんだ なにも泣くことはあるまいw
0541デフォルトの名無しさん
2013/05/27(月) 15:34:45.370542デフォルトの名無しさん
2013/05/27(月) 19:50:01.480543デフォルトの名無しさん
2013/05/28(火) 00:40:08.35Cの次は特に無し?
0544デフォルトの名無しさん
2013/05/28(火) 01:33:38.810545デフォルトの名無しさん
2013/05/28(火) 01:34:26.570546デフォルトの名無しさん
2013/05/28(火) 12:28:00.68神じゃん
0547デフォルトの名無しさん
2013/05/28(火) 12:51:48.43すると実務ではメンバ変数なら全てカプセル化するもんなのでしょうか?
カプセル化はメンバ一つにつき2つアクセスのためのメソッド(読みと書き)を書く必要があり、めんどくさいんですが
0548デフォルトの名無しさん
2013/05/28(火) 12:55:31.55メンバ変数に煩雑にアクセスするんならクラスの設計を見なおした方がいいよ
読み書きするアクセサを付ける位ならクラスの意味ないじゃん
0549デフォルトの名無しさん
2013/05/28(火) 13:00:27.44やりたきゃやればいいと思うけど
0550デフォルトの名無しさん
2013/05/28(火) 13:03:39.64でも後から泣くような気がする
0551デフォルトの名無しさん
2013/05/28(火) 13:17:41.79メンバ変数が public/private に綺麗に分かれているという前提で
public なメンバのみアクセッサを付けるというのがポピュラー
C#とか rubyとか専用の構文を持つ言語すらある
特に setter だけでも作っておくとデバッグがもの凄く楽になる
0552デフォルトの名無しさん
2013/05/28(火) 13:24:05.910553デフォルトの名無しさん
2013/05/28(火) 13:44:13.99ヘッダファイルにプロトタイプを書いて
ソースファイルに関数実体を書くのが男の流儀だよ
ヘッダに書いてインライン関数にしたりIDEの機能で追加したりするのも邪道
おれがゆるさない
0554デフォルトの名無しさん
2013/05/28(火) 13:48:06.30そういう無駄な設計技法を取り入れて実行時パフォーマンスを犠牲にするやり方は
Cのお作法ではない
JavaなりC#なりに移るべき
0555デフォルトの名無しさん
2013/05/28(火) 13:48:52.550556デフォルトの名無しさん
2013/05/28(火) 15:43:24.57publicは自由にアクセスできるのになんでアクセッサを付ける必要があるの?
0557デフォルトの名無しさん
2013/05/28(火) 15:58:18.38公開する方法もある
大抵はこれで行ける
0558デフォルトの名無しさん
2013/05/28(火) 15:59:48.150559デフォルトの名無しさん
2013/05/28(火) 16:03:23.541つのクラスをやむを得ず複数に分割せざるをえないような時に使うもの
0560デフォルトの名無しさん
2013/05/28(火) 16:10:10.560561デフォルトの名無しさん
2013/05/28(火) 17:11:59.160562デフォルトの名無しさん
2013/05/28(火) 19:27:32.23デニスリッチーが作って今使われてる言語は
C、C++、C#、Java
ってことでOK?
0563デフォルトの名無しさん
2013/05/28(火) 20:08:09.40> デニスリッチーが作って今使われてる言語は
> C、C++、C#、Java
> ってことでOK?
その文章だと、C++もC#もJavaも、リッチーが作ったという意味になる。そう理解してるの?
0564デフォルトの名無しさん
2013/05/28(火) 20:34:21.59wikipediaとかもあるわけだし。
0565デフォルトの名無しさん
2013/05/28(火) 21:04:31.20大勢の人間がレスしてんだから、質問の意図ぐらい開示してくれてもいいだろう
0566デフォルトの名無しさん
2013/05/29(水) 01:14:52.480567デフォルトの名無しさん
2013/05/29(水) 05:17:42.57/. : . : . : . : . : . : . : . : ヽ
/. : . : . : . : . : . : _,. -┐. : :| 貴
|. : 「`¨ ー-‐ j. : :!
!. : 〉 〈. : :.│ 目 様
l. :ノ-―≧从r≦=― 、ヽ、 j
「V }丞{ }气rfミ 的 の
Yハ.__ ,ノj ヾ、 ノ jら}》
ヾ {〈 r }  ̄ Lハノ は
_ ⊥ _/ゾj__ ヽ 厂
/ \辷_ヽ }l 入 何
/ ヾ-く丿j / }\
| Y´ / / ヽ だ
| ,∠ ̄ ヽ ├-ァく /
l (廴 )/ l / \
0568デフォルトの名無しさん
2013/05/29(水) 09:57:39.16あまりみんなで脅すと本人が萎縮しちゃって
言いたいことも言えなくなってしまうじゃないか! もっと優しく聞けよ!
ん? 怒らないからオジさんに言ってごらん
恥ずかしがること ないんだよ
ほら もうこんなに....
0569デフォルトの名無しさん
2013/05/29(水) 11:10:11.920570デフォルトの名無しさん
2013/05/29(水) 12:40:16.350571デフォルトの名無しさん
2013/05/29(水) 13:04:01.82>>1002
0572デフォルトの名無しさん
2013/05/29(水) 13:05:02.140573デフォルトの名無しさん
2013/05/29(水) 13:20:17.12静的なインスタンスに対するポインタならプログラムの実行を通して不変だろう
いまいち質問の意味がわからん
最近こんなのばっかり
0574デフォルトの名無しさん
2013/05/29(水) 13:26:25.99外部公開するクラスだけでいいよ
0575デフォルトの名無しさん
2013/05/29(水) 23:31:45.98動的って解釈で良いの?
0576デフォルトの名無しさん
2013/05/29(水) 23:34:07.190577デフォルトの名無しさん
2013/05/30(木) 15:35:51.03char *p;
free(&p);
なんてことしないだろ?
0578デフォルトの名無しさん
2013/06/05(水) 02:33:43.750579デフォルトの名無しさん
2013/06/05(水) 02:42:43.09それはWindowsプログラミングにおけるSUCCEEDED()マクロのこと?
もしそうだとしたら、HRESULTで調べてみて
0580デフォルトの名無しさん
2013/06/05(水) 10:40:53.54自分がぷろぐらむを書くんじゃなくて読むだけならそう思っておいていい
最近教えていただいたネタ http://codepad.org/ChgEkuVs
0582デフォルトの名無しさん
2013/06/05(水) 23:18:33.260583デフォルトの名無しさん
2013/06/06(木) 01:56:51.920584デフォルトの名無しさん
2013/06/08(土) 11:48:34.71mainの中のfloatの部分をdoubleにすると、変な値が表示されてしまうのですが
#include<stdio.h>
void dprint(double d){
printf("打率は%fです\n",d);
}
int main(void){
float sum;
printf("打率はいくつですか?\n");
scanf("%f",&sum);
dprint(sum);
return 0;
}
0585デフォルトの名無しさん
2013/06/08(土) 11:53:20.431.0*10^308 ~ 1.0*10^-307
0586デフォルトの名無しさん
2013/06/08(土) 12:04:05.32scanfの中でdoubleで定義された文字を使う場合は%lfでないとだめなのですね
0587デフォルトの名無しさん
2013/06/08(土) 18:26:25.131.テキストの先頭に追記したいです
2.テキストの先頭文字を削除したいです
・やりたいこと
test.txt aaa → bbbaaa
test.txt abc → bc
・あまりやりたくないこと
バッファに文字列を一度読み込んで,同じファイルに上書き再出力
0588デフォルトの名無しさん
2013/06/08(土) 18:28:27.04別ファイルに出力して、元ファイルを消して、別ファイルをリネーム
エラー耐性不要なら
バッファに文字列を一度読み込んで、同じファイルに上書き再出力
0589デフォルトの名無しさん
2013/06/08(土) 18:30:21.54適宜上書き出力すれば良い
上書きしてもまだ読んでない所には上書きされないので
0590デフォルトの名無しさん
2013/06/08(土) 18:41:16.04素直に読み込んどきます
0591デフォルトの名無しさん
2013/06/08(土) 18:43:30.240592デフォルトの名無しさん
2013/06/08(土) 19:21:45.52適宜最初から書き出すとは思う
0593デフォルトの名無しさん
2013/06/10(月) 12:26:28.43何が原因でかわるの?
0594デフォルトの名無しさん
2013/06/10(月) 12:28:12.470595デフォルトの名無しさん
2013/06/10(月) 13:16:34.820596デフォルトの名無しさん
2013/06/10(月) 14:48:14.70short≧int≧long
ってなってるはずだけどな
0597デフォルトの名無しさん
2013/06/10(月) 14:48:34.300598596
2013/06/10(月) 14:52:18.760599デフォルトの名無しさん
2013/06/10(月) 15:13:43.550600デフォルトの名無しさん
2013/06/10(月) 18:14:56.620601デフォルトの名無しさん
2013/06/10(月) 18:55:53.44#CP/Mの時代か〜 俺の産まれる前だわ (←ウソ)
0602デフォルトの名無しさん
2013/06/10(月) 19:35:52.770-255 の範囲で整数型(キリッ などと考える馬鹿がいるものか
0603デフォルトの名無しさん
2013/06/10(月) 19:54:56.73合ってるんだけど、何をもって自然とみなすかは規定されてないんだよね
0604デフォルトの名無しさん
2013/06/10(月) 20:00:48.950605デフォルトの名無しさん
2013/06/10(月) 20:01:06.71そりゃ規格でintは16ビット以上が
要求されてるからな
0606デフォルトの名無しさん
2013/06/10(月) 20:12:33.2564bit機でもint=32bitが一般的
レジスタサイズなどあくまで目安にしかならない
0607デフォルトの名無しさん
2013/06/10(月) 21:32:58.72それは win32api のソースを全面刷新させないための、つごー
0608デフォルトの名無しさん
2013/06/10(月) 22:13:11.670609デフォルトの名無しさん
2013/06/10(月) 22:14:06.930610デフォルトの名無しさん
2013/06/10(月) 22:45:50.890611デフォルトの名無しさん
2013/06/10(月) 22:54:29.40互換性を優先したってことだろ
文字通りの解釈しかできないアスペか
0612デフォルトの名無しさん
2013/06/10(月) 23:26:37.27x86 & Windows 以外の処理系もあるのに それは理由にならんだろ
0613デフォルトの名無しさん
2013/06/10(月) 23:29:17.88> 文字通りの解釈しかできないアスペか
お前はWindows以外を知らないアスペねw
0614デフォルトの名無しさん
2013/06/11(火) 02:04:51.46互換性最優先なのは当然だろ
0615デフォルトの名無しさん
2013/06/11(火) 02:59:42.21short=4じゃ2が空くしな
0616デフォルトの名無しさん
2013/06/11(火) 03:03:28.40将来 int3, int7が出てきても大丈夫w
0617デフォルトの名無しさん
2013/06/11(火) 06:28:39.850618デフォルトの名無しさん
2013/06/11(火) 06:59:53.50Corei7とかもどこにも64なんてついてないだろ?
そういうことだ
0619デフォルトの名無しさん
2013/06/11(火) 07:36:12.620620デフォルトの名無しさん
2013/06/11(火) 09:31:56.87処理系独自の拡張は既にあるよ。たとえば
__int8、 __int16、 __int32、 __int64
0621デフォルトの名無しさん
2013/06/11(火) 11:06:40.050622デフォルトの名無しさん
2013/06/11(火) 11:09:30.51>int3, int7ってなんだよ
もし作っても、メモリレイアウト上パディングされるだろ
0623デフォルトの名無しさん
2013/06/11(火) 13:02:00.170624デフォルトの名無しさん
2013/06/11(火) 18:33:51.41それってオプションじゃなかった?
0625デフォルトの名無しさん
2013/06/11(火) 18:41:47.5616丁度みたいのはオプションだね
0626デフォルトの名無しさん
2013/06/11(火) 19:52:40.917bitレジスタのCPUは昔存在したはず
0627デフォルトの名無しさん
2013/06/11(火) 19:56:05.32というかそのレスはバイト数の話だし
0628デフォルトの名無しさん
2013/06/11(火) 19:56:50.410629デフォルトの名無しさん
2013/06/11(火) 20:01:48.67intのビット数が変わる要因はOSの32bit64bitだけなの?
0630デフォルトの名無しさん
2013/06/11(火) 20:03:57.710631デフォルトの名無しさん
2013/06/11(火) 20:06:27.19コンパイラーを作る人の気分による。
コンパイラーは開発プログラム動作する環境の
オペレーティングシステムを強く意識している。
0632デフォルトの名無しさん
2013/06/11(火) 21:18:50.23VAXからAlphaにマイグレーションしたんで、intが64bitなるか、と調べてみたら32bitだった。多分コンパチのためだろうけど。
intが64bitの処理系ってあんのかな。
PA-RISCやSPARCマシンは使ったことないけど、どうだったんだろう?
0633デフォルトの名無しさん
2013/06/11(火) 21:31:46.730634デフォルトの名無しさん
2013/06/12(水) 19:53:44.00CPUの制約は、この際無視w
0635デフォルトの名無しさん
2013/06/12(水) 19:59:13.930636デフォルトの名無しさん
2013/06/12(水) 20:09:08.240637デフォルトの名無しさん
2013/06/12(水) 22:01:50.22#pragma onceとか#pragma pack()とか。
あとendian関係とか。
0638デフォルトの名無しさん
2013/06/13(木) 01:58:59.16プリプロセッサーの仕事から逸脱してるし
そもそも同等のことは既に標準化されてる
>あとendian関係
ちょっと意味わかんない
0639デフォルトの名無しさん
2013/06/13(木) 07:38:27.600640デフォルトの名無しさん
2013/06/26(水) 17:40:14.75TL/1
0641デフォルトの名無しさん
2013/06/26(水) 19:54:58.99昔のPC板かよ
0642デフォルトの名無しさん
2013/06/26(水) 19:55:57.39記号だらけの言語
まあBASICの予約語を記号に置き換えただけなんだけど
0643デフォルトの名無しさん
2013/06/26(水) 22:34:11.77ナノピコのコンピュータ世界の最前線が面白かった
0645デフォルトの名無しさん
2013/06/27(木) 12:18:08.50あれで相当勉強になった
これはアセンブラスレで書いた方がいいな
0646デフォルトの名無しさん
2013/06/27(木) 15:27:03.450647デフォルトの名無しさん
2013/06/27(木) 17:04:12.920648デフォルトの名無しさん
2013/06/27(木) 17:52:27.79MS-Cのばあい、FP演算には、87用、87がなくてもソフトで完全エミュレート、演算精度より速度優先、
みたいに幾つかライブラリを用意してたとおもう。
当時は(コスト的に)マシンにFPUがついてないのが当たり前だったからなぁ (遠い目…)
0649デフォルトの名無しさん
2013/06/27(木) 23:22:30.54そういや、FACCとかいってたねえ > ROM
ふぁっく!
0650デフォルトの名無しさん
2013/06/28(金) 02:25:15.798087馬鹿みたいに高かっただろ
しかも遅いし
あれで大学の研究室でマンデルブロ集合の絵描いたんだぞ
FPUとは思えないほどの遅さだった
>>648
ソフトウェアエミュレーションの場合FPUの全ての命令をエミュレート
してるわけじゃないんだよな
C言語で使う物だけ最低限入ってた
0651デフォルトの名無しさん
2013/07/30(火) NY:AN:NY.AN四捨五入ではなく切り捨てで出力する方法はないでしょうか?
double second = 59.9999999999997;
cout.precision(8);
cout << second <<endl;
で 60 ではなく 59.999999と表示されて欲しいです。
(std::scientificではなく std::fixed で表示したいです。)
お分かりの方がいらっしゃいましたらご教授いただけますと
大変ありがたいです。何とぞよろしくお願いいたします。
0652デフォルトの名無しさん
2013/07/31(水) NY:AN:NY.ANstringstreamに一桁精度高く流し込んで一文字削ったら?
0653デフォルトの名無しさん
2013/08/01(木) NY:AN:NY.ANstringstreamは流し込んだ時点でどうしても四捨五入されてしまうな
double src = 59.9999999999997;
src *= std::pow(10.0, 8);
dst = std::floor(src);
dst = dst * std::pow(10.0, -8);
std::cout << std::setprecision(10) << dst << std::endl;
結局これしかうまく行かなかった
0654デフォルトの名無しさん
2013/09/08(日) 00:20:32.770655デフォルトの名無しさん
2013/09/26(木) 01:52:08.25使ったことある方がありましたら感想お願いします
0656デフォルトの名無しさん
2013/09/28(土) 20:28:28.730657デフォルトの名無しさん
2013/10/10(木) 22:31:55.02「C言語のように明示的にアドレス演算子を使うものは参照渡しとは呼ばない」
って書いてあるけど、巷のC言語本ではこれを「参照渡し」って解説してない?
まぁWikiとしては「ポインタ渡し」と言いたいところだろうが、この機構の本質的な部分において
両者は同じ原理で動作するんだから、「参照渡しではない」と言い切るのは違和感があるな。
実際、Wikiの解説が今の時代は正しいのだろうか?
0658デフォルトの名無しさん
2013/10/10(木) 22:48:42.58プログラミング言語を限定しない汎用的学術的な定義と、
各言語の専門用語や方言として使われる定義が一致しない…
…って事でも良い気がするのだけど。
Cのポインタは参照渡しとしても利用できるし、「ポインタと言う値」として扱う事も可能である。
参照渡しとして利用する限りは参照渡しだ.が、言語実装的にはポインタ形の値渡しである。
どう見なして扱うか。言語のパラダイムとかってのはそういうモンだよな。
オブジェクト指向の設計をアセンブリ言語で実装とかも可能なのだし。
0659デフォルトの名無しさん
2013/10/10(木) 23:38:54.64たぶん今の規格にそんな記述はないだろうな
0660デフォルトの名無しさん
2013/10/11(金) 00:28:11.18C++ に参照渡しがある以上,C のあれは参照渡しじゃないだろう.
wikipedia の「参照渡しではない」と言い切る,あるいは「Cは参照渡しCallByReferenceを持たない」と言い切るのが正確無比といえよう.
0661デフォルトの名無しさん
2013/10/11(金) 09:49:20.88言語仕様として用意されてるのは値渡しだけで
プログラマが引数にポインタ演算子を使ってアドレスを突っ込むことで 『プログラマが』 参照渡しのコードを書いてる…と言える。
配列だって仮引数で*宣言するのはプログラマだしね。
俺の理解が間違っていたのか… orz
0662デフォルトの名無しさん
2013/10/11(金) 16:27:52.16まぁ、今間違いに気付き正しく理解したのだから、一生間違ったままでいるよりよかったじゃん。
0663デフォルトの名無しさん
2013/10/11(金) 16:39:23.080664デフォルトの名無しさん
2013/10/12(土) 16:40:18.70テキストボックス(名前:textBox1とする)を配置すると、
textBox1->Text
でString型の文字列がとれるんだけど、これをatoiしたいがためにchar型に変換しようとして、
atoi(textBox1->Text->c_str());
って書くと、
「c_strはSystem::Stringのメンバではありません」って表示される。
c_strってメンバじゃないの?
0665デフォルトの名無しさん
2013/10/12(土) 16:45:22.720666デフォルトの名無しさん
2013/10/12(土) 19:01:21.070667デフォルトの名無しさん
2013/10/13(日) 03:40:19.13c_str()はstd::string(標準C++ライブラリの文字列クラス)のメンバ。
System::Stringは標準C++ライブラリではない、別のライブラリのクラスで、そこにc_str()は無いのだろう。
0668デフォルトの名無しさん
2013/10/13(日) 14:19:34.42ゲーム本編のクラスに細かい機能のクラスを追加したかった場合
どのように追加したクラスを本編クラスにくっつけるものなのですか?
本編クラスのメンバーでそのクラスを生成すれば良いのですか?
0669デフォルトの名無しさん
2013/10/13(日) 14:21:37.850670デフォルトの名無しさん
2013/10/13(日) 15:57:42.99(多重)継承を使ったミックスイン手法を使う
多重継承は基本さえ押さえていればJava陣営が喧伝するほど危険なものではない
0671デフォルトの名無しさん
2013/10/13(日) 21:26:05.35一瞬一瞬は便利だけど後になればなるほど肝心な部分の変更が難しくなっていくし。
ゲーム開発はソフトウェアの中でも特にコア部分をいじりまくる分野なんだから多重継承を推奨すべきではないと思うよ。
移譲で解決を図るべきだと思う。
0672402
2013/10/14(月) 00:42:24.97その点で委譲と継承に違いなんてないだろ
ミックインされるクラスがちゃんと設計されていれば
protectedメンバはあってはならない
0673デフォルトの名無しさん
2013/10/14(月) 00:43:32.930674デフォルトの名無しさん
2013/10/14(月) 08:30:21.93まあ、gotoみたいなもんだと思う。
使う範囲を絞らないとグチャグチャになってしまう。
だからJavaなんかはgotoと同じく禁止にして
代替機能としてinterfaceを用意したんだろうね
…出来ればmixinも用意して欲しかったけれど
0675デフォルトの名無しさん
2013/10/17(木) 19:17:34.62構造体のメンバ?の値渡しって処理に時間がかかりますか?
構造体自体を値渡しすると処理が遅くなるのはわかりますが、
メンバの値渡しも同じぐらい処理が遅くなるのでしょうか?
構造体を使うときは、基本的に値渡しは行わないものなのでしょうか
よろしくお願いします
0676デフォルトの名無しさん
2013/10/17(木) 19:24:30.94補足します
現在販売されている一般的な家庭用パソコンでの処理速度の話です
構造体の多きさは2キロバイト程度です
0677デフォルトの名無しさん
2013/10/17(木) 19:34:41.720678デフォルトの名無しさん
2013/10/17(木) 21:33:15.23どうすべきなのか判りました。ありがとうございます
0679デフォルトの名無しさん
2013/10/18(金) 00:49:09.600680デフォルトの名無しさん
2013/10/18(金) 06:57:28.270681デフォルトの名無しさん
2013/10/18(金) 17:11:11.920682デフォルトの名無しさん
2013/10/18(金) 22:30:24.312kはさすがに大きすぎるからポインタのがいいだろ
0683デフォルトの名無しさん
2013/10/19(土) 15:31:59.300684デフォルトの名無しさん
2013/10/19(土) 15:40:27.390685デフォルトの名無しさん
2013/10/19(土) 17:45:48.57static関数を定義してるんですけど、何故かクラスファイルでエラーが発生します。
'static' can only be specified inside the class definition
と言うメッセージが出ます。
クラス内の宣言↓
static bool
Util::isEmpty(Tizen::Base::String* str) {
if (str == null || str->IsEmpty()) {
return true;
}
return false;
}
ヘッダーファイルです↓
class Util {
public:
Util();
virtual ~Util();
static bool isEmpty(Tizen::Base::String* str);
};
よろしくお願い致します。
0686デフォルトの名無しさん
2013/10/19(土) 18:01:43.290687デフォルトの名無しさん
2013/10/20(日) 04:50:29.33コンパイルできました!
初歩的な質問に答えて頂きありがとうございました!(´・ω・`)
0688デフォルトの名無しさん
2013/10/20(日) 17:00:59.120689デフォルトの名無しさん
2013/10/20(日) 21:35:13.080690デフォルトの名無しさん
2013/10/20(日) 21:50:33.720691デフォルトの名無しさん
2013/10/21(月) 11:44:32.290692デフォルトの名無しさん
2013/10/21(月) 14:42:13.09Idle状態で放置していたら何も仕事を受け付けなくなりました
一度シャットダウンしたほうがいいですか?
0693デフォルトの名無しさん
2013/10/21(月) 16:35:46.760694デフォルトの名無しさん
2013/10/21(月) 17:30:06.08リブートにシャットダウン含まれてるんじゃ
0695デフォルトの名無しさん
2013/10/22(火) 12:07:29.47マジレスすると、(正常な)シャットダウンを含まないリブート(例えば、電源断やハードリセット、システムクラッシュetc後の再起動)もあるよ。
wikiの再起動の項を参照してみんさい。
0696デフォルトの名無しさん
2013/10/23(水) 15:19:42.21↑クラスのメンバ関数に関数ポインタや関数リファレンスを使うにはどうしたらいいんですか?
0697デフォルトの名無しさん
2013/10/23(水) 17:37:50.41f();
0698デフォルトの名無しさん
2013/10/23(水) 17:58:41.32http://ideone.com/7WSPf2
0699デフォルトの名無しさん
2013/10/23(水) 18:40:35.54積極的に書き換える時、きれいに書けなくて困ったことがある
vtableのサイズ、各メソッドの位置を、、
できればVCで
0700デフォルトの名無しさん
2013/10/23(水) 18:51:49.27質問ならはっきり疑問形で書け
0701デフォルトの名無しさん
2013/10/23(水) 19:39:47.70�d
void (&rfunc)() = func; のほうは出来ないの?ポインタだけ?
0702デフォルトの名無しさん
2013/10/23(水) 19:41:44.710703デフォルトの名無しさん
2013/10/23(水) 20:04:57.65�d
エイリアスみたいに違う名前で呼び出したりとかは出来んのか残念
0704デフォルトの名無しさん
2013/10/25(金) 04:07:16.54これのエラーの原因が分かりません
0705デフォルトの名無しさん
2013/10/25(金) 04:27:42.44テンプレートはコンパイル時に解決できる必要があるから、
ヘッダに中身も書いてやらないと駄目
もしくは特殊化してやる必要がある
0706デフォルトの名無しさん
2013/10/25(金) 04:34:25.43コンパイル時に定義が見えている必要がある
0707704
2013/10/25(金) 05:03:55.97�d
つまりテンプレートで定義したクラスも関数もヘッダに全部書く必要があるってことですね
便利そうであまり便利じゃないんですねテンプレートって・・・
0708デフォルトの名無しさん
2013/10/25(金) 05:10:08.080709704
2013/10/25(金) 05:38:16.70テンプレートって読んで字のごとくでコンパイラにとってのテンプレートって意味だったんですね
Value<int>やValue<long>が使われてたらコンパイラがint専用やlong専用のをテンプレートに従って再定義し直してたんですね
0710デフォルトの名無しさん
2013/10/25(金) 08:36:23.140711デフォルトの名無しさん
2013/10/25(金) 13:31:02.42「明示的な実体化」とかになるのかな?
cppに書いたのを定義するために、ヘッダで型をいれて宣言しておく必要がある
0712デフォルトの名無しさん
2013/10/27(日) 15:42:38.840713デフォルトの名無しさん
2013/10/27(日) 15:45:26.64定義が重複しています
0714デフォルトの名無しさん
2013/10/27(日) 15:46:22.28定義が見つかりません
0715デフォルトの名無しさん
2013/10/27(日) 15:47:53.92必ず100回目で「sqrt domain error」が必ず出ます。
数値を色々変えてみても必ず起きます.
sqrt domain errorはルートの中身が負のときでるエラーだと思うのですが
それ以外に出る原因はありますか?
0716デフォルトの名無しさん
2013/10/27(日) 16:19:53.51infとかnanとか
sqrtに渡してるのを調べればすぐに分かるだろ
0717デフォルトの名無しさん
2013/10/27(日) 16:33:21.72マルチ
0718デフォルトの名無しさん
2013/10/27(日) 20:14:55.490719デフォルトの名無しさん
2013/10/31(木) 17:26:23.25関数内でクラス型のダブルポインタを作って、必要な要素数の配列ポインタをnewする。
さらに配列の要素ごとにnewして、そのポインタを返す。
これであっていますか?
関数内でnewしたら変数の寿命はどうなるんですかね?
初歩的な質問ですいません...
イメージとしては
Hoge** getHogeArr() {
Hoge** ppHoge = new Hoge*[100];
for (int i = 0; i < 100; i++) {
ppHoge[i] = new Hoge();
}
return ppHoge;
}
0720デフォルトの名無しさん
2013/10/31(木) 17:32:36.270721デフォルトの名無しさん
2013/10/31(木) 20:28:37.560722デフォルトの名無しさん
2013/11/03(日) 01:23:46.76http://ideone.com/kxiZ3U
コンテナ+スマポで一挙に解決
0723デフォルトの名無しさん
2013/11/14(木) 20:20:38.45(2) a.out 2>/dev/null
速いのは?
0724デフォルトの名無しさん
2013/11/14(木) 21:07:18.940725デフォルトの名無しさん
2013/11/16(土) 19:54:08.64ポインタにnewした領域を参照変数に渡します。
参照変数が破棄されると、newしたポンタはどうなります?
そのまま残りますか?
また、参照変数で指したポインタを明示的に破棄することは可能ですか?
イメージとしてはこんな感じです
参照変数 = *(newしたポインタ)
delete 参照変数;
0726デフォルトの名無しさん
2013/11/16(土) 19:57:02.260727デフォルトの名無しさん
2013/11/16(土) 19:58:55.44char *str1, *str2;
str1 = new;
str2 = str1;
delete str2;
これならdelete str1と同じ
0728デフォルトの名無しさん
2013/11/16(土) 21:01:15.850729デフォルトの名無しさん
2013/11/17(日) 00:34:41.67数が少ないうちはいいけど、多くなるととても自分では管理しきれなくなる
0730デフォルトの名無しさん
2013/11/17(日) 02:08:52.76vector<int> v(100);
for(int i=0;i<v.size();i++) v[i]=乱数生成()
などとすれば可能なのはわかりますが,v(100)の時に全て0で初期化されるのは無駄が気がします。
0731デフォルトの名無しさん
2013/11/17(日) 03:59:01.53vector<int> v;
v.reserve(100);//メモリだけ確保しておく、ただしこの時点でsize()は0
あとはpush_backを使う。
for (size_t i=0; i<100; ++i) v.push_back(rand());
or
std::generate_n(std::back_inserter(v), 100, rand);
vector内部のsizeがpush_backのたびに加算されるのでその分のコストは掛かるかもしれない。
0732デフォルトの名無しさん
2013/11/17(日) 04:35:00.45最適化無しだとpush_backの呼び出しコストがアホみたいに掛かるし、
最適化が掛かればループ内で参照しない文のsize加算は消滅が期待できるんじゃね?
0733デフォルトの名無しさん
2013/11/17(日) 07:10:41.970734デフォルトの名無しさん
2013/11/17(日) 08:26:52.17Dを使おうよ
0735デフォルトの名無しさん
2013/11/17(日) 08:28:02.020736デフォルトの名無しさん
2013/11/17(日) 08:58:28.85D道に果てはない
0737デフォルトの名無しさん
2013/11/18(月) 20:12:00.710738デフォルトの名無しさん
2013/11/18(月) 21:00:40.37_____int i;
_____for(i=0;i<10;i++)・・・
この場合こうするかって事?
_____int i;
_____
_____for(i=0;i<10;i++)・・・
0739デフォルトの名無しさん
2013/11/18(月) 21:01:50.740740デフォルトの名無しさん
2013/11/22(金) 23:11:43.19コンテキストメニューにあるような別のプログラムで開くに相当する関数が見つけられなくて困ってます
0741デフォルトの名無しさん
2013/11/22(金) 23:52:41.220742デフォルトの名無しさん
2013/11/23(土) 01:43:34.50for %s in (*.xxx) do start /w %s
みたいにもできるわけだ
0743デフォルトの名無しさん
2013/11/23(土) 16:55:50.93既にダイアログを開いて選択するところまでは作れているものとして
とりあえず ShellExecute かな
0744デフォルトの名無しさん
2013/11/26(火) 08:26:21.150745デフォルトの名無しさん
2013/11/26(火) 08:54:14.750746デフォルトの名無しさん
2013/11/26(火) 16:38:40.760747デフォルトの名無しさん
2013/11/26(火) 23:56:43.50シェルスクリプトやバッチファイルでエスケープされてるか気にしながら書くよりは、
systemを乱用してコード書いたほうがマシなケースも有るような気がしなくもない。
0748デフォルトの名無しさん
2013/11/27(水) 01:32:06.13さすがC/C++厨の発想だな
おまおれ
0749デフォルトの名無しさん
2013/11/27(水) 08:14:36.750750デフォルトの名無しさん
2013/11/27(水) 12:39:08.44つ[popen()]
0751デフォルトの名無しさん
2013/11/27(水) 16:24:30.310752デフォルトの名無しさん
2013/12/21(土) 12:57:54.83標準出力にもファイル出力にも何も出てこないぞ。
あんまりまともに説明の書いてる本とか見たことないな。
使ってる人も少ないんかいな。下のプログラムは、nsize1 == 12 と標準出力するだけ
になる。wcscpy()関数しか言うことを聞いてくれないな。
何でやねん。
#include <stdio.h>
#include <wchar.h>
#include <string.h>
#include <assert.h>
int main(void)
{
FILE *fp1;
wchar_t wcstr1[256];
size_t nsize1;
fp1 = fopen("writefile.txt", "w");
assert(fp1);
fputws(L"ワイド文字列 wchar_t型\n", fp1);
wcscpy(wcstr1, L"漢字 alphabet\n");
nsize1 = wcslen(wcstr1);
printf("nsize1 == %u\n", nsize1);
fputws(wcstr1, fp1);
fclose(fp1);
_putws(L"終了");
return 0;
}
0753デフォルトの名無しさん
2013/12/21(土) 14:29:59.28http://msdn.microsoft.com/ja-jp/library/t33ya8ky(v=vs.90).aspx
"wb"でファイル開け
0754デフォルトの名無しさん
2013/12/21(土) 15:29:29.31setlocaleしてないからだ
0755デフォルトの名無しさん
2013/12/21(土) 19:36:30.84で試したら、std::cout にwchar_t配列を渡しても正しく表示しないし、wstringクラスの
オブジェクトを渡すとコンパイルエラーに、困ったもんだな。
#include <iostream>
#include <string>
#include <cwchar>
#include <clocale>
#include <cassert>
int main(void)
{
const char *pc1;
wchar_t wcstr1[256] = L"漢字 Alphabet";
pc1 = setlocale( LC_ALL, "JPN" );
assert(pc1);
std::cout << wcstr1 << L'\n'; // "0018FCAC10"と表示する
std::wstring wstrobj1(wcstr1);
// std::cout << wstrobj1 << L'\n'; コンパイルエラー
return 0;
}
0756デフォルトの名無しさん
2013/12/21(土) 20:01:42.200757デフォルトの名無しさん
2013/12/21(土) 20:11:50.58試すと成功しました。
それでは、ifstreamとofstreamクラスもwchar_tの対応型のクラスもあるんですか。
0758デフォルトの名無しさん
2013/12/21(土) 20:35:39.890759デフォルトの名無しさん
2013/12/21(土) 20:36:26.32「yti0num1 == 2」を標準出力して、readfile.txtの内容が「yti0」とおかしく表示して、
writefile.txtで作成したファイルには何も出力されてません。何で?
-- readfile.txt 文字コード Unicode(LE) 改行 CR LF
ワイド文字列 wchar_t型
漢字 alphabet
-- プログラム
#include <iostream>
#include <string>
#include <cwchar>
#include <clocale>
#include <fstream>
#include <cassert>
int main(void)
{
const char *pc1;
pc1 = std::setlocale( LC_ALL, "JPN" );
assert(pc1);
std::wifstream wifs1("readfile.txt");
assert(wifs1);
std::wstring wstr1;
int num1 = 0;
0760デフォルトの名無しさん
2013/12/21(土) 20:36:58.49for (;;) {
std::getline(wifs1, wstr1);
if (wifs1.eof()) {
break;
}
std::wcout << wstr1 << L'\n';
++num1;
}
std::cout << "num1 == " << num1 << '\n';
std::wofstream wofs1("writefile.txt");
assert(wofs1);
wstr1 = L"書き込み文字列 (Write string)";
wofs1 << wstr1 << L'\n';
return 0;
}
0761デフォルトの名無しさん
2013/12/21(土) 20:57:51.05本にはおまけ程度にwchar_t型を書いてるくらいで、具体的なサンプルコードまで説明
してるものを見たことがないし、C++ Builder 5のヘルプファイルもwchar_t対応版の
関数名を書いてるくらいで具体的なサンプルコードはないし、Visual Studio .NET 2003
のMSDNも同様だな。ネットも情報が少ないし。
やっぱりCやC++でUnicodeの入出力とかする人は少ないんかいな。
VB.NetやC#.NetかJavaとかで作ったほうがいいんかいな。
0762デフォルトの名無しさん
2013/12/21(土) 21:07:16.16_wsetlocale(LC_ALL, L"JPN");とchar or wchar_tを統一するか
TCHARを使用
0763デフォルトの名無しさん
2013/12/21(土) 21:08:36.71書いてるページがなかっな。こんなに情報量が少なければ、知識のある人や実際
にプログラミングしてる人って、多分少ないんだろうな。
0764デフォルトの名無しさん
2013/12/21(土) 21:22:33.67cout, wcout, ・・・って載ってるだろ
0765デフォルトの名無しさん
2013/12/21(土) 21:23:10.17ていうか、wcoutでもwprintfでもいいけどUnicodeにしかない文字を出力してみるといい。
WindowsならWin32API触らないとCP932の文字しか出力されない構造になってるんだよ。
cmd.exe /UみたいなのがあるくらいにはコンソールプログラムのUnicode対応はメンドイ。
cscript.exeとかもパイプに繋ぐと出力APIが切り替わってCP932に強制変換されてしまう。
WindowsならWin32API使わなきゃ駄目で、Unixは最悪ロケールCにUTF-8流し込むだけ。
UnixはUTF-8でwchar_tは使わないし、WindowsはUTF-16だけどwchar_tじゃなくWCHAR。
wchar_tでUTF-16ってのはWCHARの変わりに使える、位しか意味無いんじゃないかな。
0766デフォルトの名無しさん
2013/12/21(土) 21:36:57.19std::locale::global(std::locale("japanese"));にしろ
0767デフォルトの名無しさん
2013/12/22(日) 10:33:42.341つのスペース置きに文字が表示されて、漢字はでたらめな文字が表示され、
ファイル出力のところは、UTF16 LEではなくShift-JISで出されますが。
modeにbinaryを指定しても。
std::ios_base::openmode mode;
mode = std::ios_base::in | std::ios_base::binary;
std::wifstream wifs1("readfile.txt", mode);
mode = std::ios_base::out | std::ios_base::binary;
std::wofstream wofs1("writefile2.txt", mode);
0768デフォルトの名無しさん
2013/12/22(日) 11:09:00.27>>759->>760のこれを削除
> pc1 = std::setlocale( LC_ALL, "JPN" );
> assert(pc1);
これを追加でいけるだろ
> std::locale::global(std::locale("japanese"));
---------標準出力結果
ワイド文字列 wchar_t型
漢字 alphabet
num1 == 2
---------
---------ファイル出力結果
書き込み文字列 (Write string)
---------
0769デフォルトの名無しさん
2013/12/22(日) 11:11:37.65コードはこれ使って全て入力して
ttp://ideone.com/
0770デフォルトの名無しさん
2013/12/22(日) 13:51:05.84標準出力
---- Visual C++ .NET 2003
、0ノ0�eW[ R w c h a r _ t 妓
"oW[ a l p h a b e t
num1 == 2
-- Borland C++ Compiler 5.5
num1 == 0
-- Digiral Mars C and C++ Compiler
�d0・ W[ R w c h a r _ t ・
"oW[ a l p h a b e t
num1 == 2
---- ファイル出力結果
Visual C++ .NET 2003 - - - - Shift-JISで出力
Borland C++ Compiler 5.5 - - Shift-JISで出力
Digital Mars C and C++ Compiler - - - 不明な文字コードで出力。
SJIS, JIS, EUC, Latin1, UTF-16 LE, UTF-16 BE, UTF-8, CESU-8, UTF-7のいずれでもない。
ただし、この中でUTF-16以外でならASCIIコードの文字はそのまま表示する。
----- 以上、終了 ----
0771デフォルトの名無しさん
2013/12/22(日) 16:14:59.59Visual C++ Express Edition 2010でやってみたらどうなる?
0772デフォルトの名無しさん
2013/12/23(月) 09:43:58.92Visual C++ Express Edition 2010ではないが、Windows SDKでVisual C++ 2010の
64bitのコンパイルでも、2003と同じ結果だった。
0773デフォルトの名無しさん
2013/12/24(火) 17:31:11.42再帰有りの処理は以下のとおりに実装しました。
http://ideone.com/F7QMld
これを再帰無しの処理に実装し直したいんですが、(odd_even_mergesort関数一つにまとめたい)
いい方法が思いつきません。ヒントや方法等を教えて下さい。
0774デフォルトの名無しさん
2013/12/24(火) 20:29:02.70コード読まずにレスするけど、まずは
関数のローカル変数としてスタックを用意する。
んで関数の引数をスタックに積む。
んでスタックが空になるまで一個ずつ取り出すループの中に処理を書く。
んで再帰する代わりにスタックに積む。
0775デフォルトの名無しさん
2013/12/28(土) 00:31:34.53回答ありがとうございました。
その方法を足がかりとしてもう少し考えてみたいと思います。
ありがとうございました。
0776デフォルトの名無しさん
2013/12/31(火) 18:35:58.74のように、変数に入っている関数を実行する方法は無いでしょうか??
教えていただけると嬉しいです。
0777776
2013/12/31(火) 18:36:52.51変数に入っている文字列と同名の関数を実行する方法、
といった方がただしかったです
0778デフォルトの名無しさん
2013/12/31(火) 19:02:39.49構造体やクラスメンバとしての変数名はリンク時に消えるから、構造体やクラスのメンバの状態でそのまま呼ぶのは無理。
.DLLとか.soとかデバッグ情報付きの実行ファイルとかリンク情報が残ってる場合にそれ辿る事も可能ではあるが普通はやらん。
std::map<std::string,目的の関数ポインタ>とか作って自前で関数名と関数を紐付けしとくのが正攻法、かな。
オーバーロードまで考えると型情報も要るけど。
0779デフォルトの名無しさん
2013/12/31(火) 22:14:38.61関数ポインタの仮引数に定番となる引数の他にvoid*ひとつ持たせたり…
もっと拡張性持たせるならJavaチックになるけど
共通のインタフェースを実装した関数クラスにしたりとかね
まあ、一番はsend()相当を使って何がしたいのか、だと思う
0780デフォルトの名無しさん
2014/01/01(水) 02:22:13.69結構色々実装しないといけない感じになるんですね。
すみませんあともう1つ質問させていただきたいのですが、
int sample1[2][2] = {{1,2}, {1,2}};
int sample2[3][2] = {{1,2}, {1,2}, {1,2}};
int* p;
if (true) {
p = sample1;
} else {
p = sample2;
}
こういったことがしたいのですが、
p = sample1;
p = sample2;
の部分で
cannot convert error のような感じになってしまいます。
sample1 と sample2 の両方が格納できるような変数を作りたいのですが、
どのような書き方をすればいいでしょうか。
アドバイスいただけると嬉しいです。
0781デフォルトの名無しさん
2014/01/01(水) 12:05:29.36呼び出したい関数が、ただの関数なのかクラスのメンバ関数なのか、さらに
メンバ関数の場合、仮想関数(virtual)なのか、オーバーロードされているか
どうかによって多少異なる。
普通の関数なら、C言語のみの記述でも、下記のようなデータ構造で名前と
関数エントリを管理することはできる。 ただ、下記のように単純にテーブル
から関数ポインタを取得して呼び出す場合、引数の並びと、順序毎の引数の
型はすべての関数で同じでなければならない。 引数をスタックに積むのと、
スタックの解放は、呼び出し側で行うので、引数の数が多い分には構わない。
typedef struct func_info
{
char func_name[32];
void (*func_entry)();
} FUNC_INFO;
static FUNC_INFO func_table[]={{"strcpy",strcpy}
,{"strcat",strcat}
,{"strlen",strlen}};
>>780
int *p[2];
ただ、ポインタでは要素の数は管理できないし、両者の区別もできない。
0782片山博文MZコスモ ◆T6xkBnTXz7B0
2014/01/01(水) 17:48:01.34SAMPLE *p;
または
int (*p)[2];
0783デフォルトの名無しさん
2014/01/02(木) 11:35:53.830785デフォルトの名無しさん
2014/01/02(木) 22:47:11.140786デフォルトの名無しさん
2014/01/02(木) 22:49:39.97「i」ndex
0787デフォルトの名無しさん
2014/01/02(木) 22:49:50.470788デフォルトの名無しさん
2014/01/02(木) 22:52:46.530789デフォルトの名無しさん
2014/01/02(木) 23:02:32.34ありがとうございました!
0790デフォルトの名無しさん
2014/01/02(木) 23:23:17.380791デフォルトの名無しさん
2014/01/03(金) 07:20:41.530792デフォルトの名無しさん
2014/01/03(金) 08:44:31.070793デフォルトの名無しさん
2014/01/08(水) 01:10:36.47n3337を読めば良いの?
0794デフォルトの名無しさん
2014/01/08(水) 01:21:07.000795デフォルトの名無しさん
2014/01/08(水) 01:24:47.66規格書を参照するクセつけといた方が良いかなと・・・
0796デフォルトの名無しさん
2014/01/08(水) 01:38:47.870797デフォルトの名無しさん
2014/01/08(水) 01:47:23.56なんで例外ってあるんでつかねぇ?
Cのときには無くてもやっていけたじゃないでつか?(´・ω・`)
0798デフォルトの名無しさん
2014/01/08(水) 01:51:22.580799デフォルトの名無しさん
2014/01/08(水) 02:09:54.800800デフォルトの名無しさん
2014/01/08(水) 02:46:22.00それはその通りだと思う
でも全くの初心者が最初に読むべきものでは無いんじゃないかと
あれはそこそこ作れるようになってきた人が横に置いておくものでしょ
0801デフォルトの名無しさん
2014/01/08(水) 03:08:40.62深く理解するのはいいことだけど、そもそも規格書を厳密に参照しなきゃいけないようなタイトなコードを書く必要がある時点で大抵何か設計を間違えてる。
あと稀なケースではあるけどコンパイラがバグ抱えてたり未実装だったりする場合、いくら規格書が正しくてもコードはコンパイラに合わせてあげないといけないわけで。
本末転倒に感じるかもしれないけど規格書が常に正しいとは限らないからあんまりその辺の原理主義者に惑わされない方がいいと思うよ。
それに肝心なのは言語そのものの文法より使いこなし方だから、C++本体の規格書とか読む暇があるんだったらBoostのドキュメント読んだ方がよっぽど有意義だと思う。
0802デフォルトの名無しさん
2014/01/08(水) 07:23:06.92割り込みってのが大昔からある
0803デフォルトの名無しさん
2014/01/08(水) 07:50:49.96デストラクタ「」
0804デフォルトの名無しさん
2014/01/08(水) 08:45:11.380805デフォルトの名無しさん
2014/01/08(水) 11:27:20.22> 規格書を厳密に参照しなきゃいけないようなタイトなコードを書く必要がある時点で大抵何か設計を間違えてる
> 規格書が常に正しいとは限らない
これ、世の中の大多数のプログラマの共通認識なんですか?
0806デフォルトの名無しさん
2014/01/08(水) 12:25:47.26時々自問するといい、コードを書くのは手段であって主目的ではない
規格書をひもとく必要があるコードってのは、誰でも読める書き方になってないことがある
もちろん、規格書が頭に入ってないといけない人ってのはいる
極端な話、コンパイラ、ライブラリ書いてる人は、そうだな
0807デフォルトの名無しさん
2014/01/08(水) 12:29:03.51ここだけ抜き出すと意味が変わる
処理系にバグがあると、規格書に準拠して書いてもコンパイル出来なかったり、実行時にエラーになることはある
0808デフォルトの名無しさん
2014/01/08(水) 12:30:59.42あと、ここでバトルする場合規格書に精通していないと負ける
0809デフォルトの名無しさん
2014/01/08(水) 13:10:27.60規格に詳しいかどうかは本質的に関係ない。
0810デフォルトの名無しさん
2014/01/08(水) 20:08:06.170811デフォルトの名無しさん
2014/01/08(水) 20:16:28.120812デフォルトの名無しさん
2014/01/09(木) 08:22:10.60そこで話が終わってしまう
正直、読めるモノなら、読んでるからねえ
0813デフォルトの名無しさん
2014/01/09(木) 22:38:32.280814デフォルトの名無しさん
2014/01/09(木) 23:56:49.81#define true 1
#define false 0
とするのが常套手段かな‥
0816デフォルトの名無しさん
2014/01/10(金) 03:12:33.21うろ覚えだけど1と0だったような・・・
エラー値としては結構-1が使われる事が多い気がするけど、
それは単に0を含む自然数を正常値として扱うからだろうし。
0817デフォルトの名無しさん
2014/01/10(金) 04:32:40.45C++のtrue falseを使用してた事もあったな
そのとおり決まっている、すなわち、出力としての比較演算子/等値演算子や論理演算子&&/|| は真のときには 1 を返すことは確約されている。
ISO/IEC 6.5.8.5, 6,5,9,3, 6.5.13.3, 6.5.14.3
しかし、<ctype.h> の諸関数(isalpha() とか)は真のときに1を返すとは限らず、あくまで非零で真、零で偽だったりする。
0819デフォルトの名無しさん
2014/01/10(金) 07:11:25.06boolといいつつ0/1で書くのは
頭がおかしいのでは?
0820デフォルトの名無しさん
2014/01/10(金) 11:43:43.50言いたいことがよく分からん。
日本語で会話しているのに
英語のyes/noを使用するような感じ?
0821デフォルトの名無しさん
2014/01/10(金) 11:59:57.42どちらかというと
「日本語の文章なのに 銀行ATM とか NTT とかアルファベット文字使っちゃった」
というイミフなレベル
0822デフォルトの名無しさん
2014/01/10(金) 16:27:01.580823デフォルトの名無しさん
2014/01/10(金) 20:40:33.320824デフォルトの名無しさん
2014/01/10(金) 22:32:29.43んなこたーない
Cにも昔からある
0825デフォルトの名無しさん
2014/01/11(土) 00:35:47.750826デフォルトの名無しさん
2014/01/11(土) 01:17:45.59ISO/IEC 9899:2011 7.18p2
『macro bool expands to _Bool』
この仕様は14年前からあったはず
0827デフォルトの名無しさん
2014/01/11(土) 01:42:15.670828デフォルトの名無しさん
2014/01/11(土) 01:45:15.89つまりVSが
0829デフォルトの名無しさん
2014/01/11(土) 01:50:56.55真面目に実装されたのが2005年
0830デフォルトの名無しさん
2014/01/12(日) 02:18:48.37プロとしてはクラッシュが一番怖い。面目丸潰れ。例外なら予想されるクラッシュに先手を打てる。
0831デフォルトの名無しさん
2014/01/12(日) 02:52:04.54アプリケーションが動作を停止しましたってやつ?
0832デフォルトの名無しさん
2014/01/12(日) 05:26:18.32WindowsでC/C++だと、言語自体の例外処理機構使わずにSEH(構造化例外処理)使ったりもするんだけどな。
これ、C++じゃなくてC/C++。Cで普通に使える例外機能。
「クラッシュ」って大半が(特にヌルポでの)アクセス違反だから、クラッシュ避けだけならこれで十分だよ。
まぁそれは置いといて、スタック巻き戻しでデストラクタが走るからエラー処理を簡潔に書けるのがメリットかと。
0833デフォルトの名無しさん
2014/01/12(日) 12:00:42.55"クラッシュ"と聞くとアプリよりもOSが落ちることを連想するんだよな
俺が育った会社や親の躾のせいかもしれないが‥
0834デフォルトの名無しさん
2014/01/12(日) 15:43:20.83コールバック関数内でのエラー通知するために例外を使う
0835デフォルトの名無しさん
2014/01/12(日) 16:33:38.68すごいしつけをする親もいたもんだな
0836デフォルトの名無しさん
2014/01/12(日) 23:47:49.62WindowsはNT系になってから落ちにくくなったからなぁ…
落ちるときはハードかドライバの故障・バグが大半だし。
9x系やDOSはアプリの暴走でOSが巻き込まれるから、
「アプリのクラッシュ≒OSもクラッシュ」だったんじゃね?
無限ループ発生→ビジー状態→うぼぁ
ヌルポ発生→一般保護例外連発→うぼぁ
0837デフォルトの名無しさん
2014/01/13(月) 06:34:33.27使うなら具体的な現象(アプリケーションエラー、ブルースクリーンなど)
を使うから
0838デフォルトの名無しさん
2014/01/13(月) 06:59:06.38こんな具体性に書ける説明は信用ならない
0839デフォルトの名無しさん
2014/01/13(月) 09:37:02.500840デフォルトの名無しさん
2014/01/13(月) 15:43:11.88でもOS巻き込んで落ちてた時代に両者の区別ができるかって言うと・・・ねぇ・・・?
0841デフォルトの名無しさん
2014/01/13(月) 16:50:00.63○○より××だから〜
0842デフォルトの名無しさん
2014/01/13(月) 17:26:09.43Windows2000、XPはDirectXを入れはじめた時でもあって、GDIまでカーネルモードだと
遅くて仕方がないのでここだけユーザーモードにした
だから画面関係でトラブるとやはりOS巻き込んで落ちる
Flashの再生でよくXP固まってたでしょ
Flash再生しながらChromeで別タブで他のページ開こうとすると結構な確率で
うんともすんともいわなくなってた
Vistaからは元に戻した
ハードウェアの性能が上がってカーネルモードでも問題なくなったからだね
0843デフォルトの名無しさん
2014/01/14(火) 04:00:47.47リソース不足でGUIが固まったことはあるが、その条件で固まった覚えは特に無いんだが・・・
個体差が有る(ハード・ハード構成・ドライバに依存している可能性がある)問題だったりしないか?それ。
そもそも固まるのと落ちるのはちと違うし、9xよりは遥かにマシなのは間違いないと思うが。
0844デフォルトの名無しさん
2014/01/14(火) 05:44:34.270845デフォルトの名無しさん
2014/01/21(火) 06:58:32.99コピーもムーブも起こってないのに、実測で倍くらいになって???ってなってる
ちなみにVS2013Exp
気持ち悪くてしょうがない
0846デフォルトの名無しさん
2014/01/21(火) 08:36:01.64本当にNRVOされてるかアセンブリ見てみないと
0847デフォルトの名無しさん
2014/01/21(火) 11:06:49.76ゲームのWave 差換えしたりして対処してた
0848デフォルトの名無しさん
2014/01/21(火) 11:59:23.05どうやったって対抗しきれるもんじゃないだろうし
0849デフォルトの名無しさん
2014/02/11(火) 18:24:11.74カルダノの公式を使って
出力するプログラミングしようと思ってるんですが
例えばx^3-6x^2+11x-6という式だった場合
それぞれa,b,c,dの入力値を
http://shadowacademy.web.fc2.com/tartagliacardano.html
上記のページの最後の方のx1の式に当てはまるようにプログラミングすれば
解の一つが出るってことでしょうか?
試しにやってみたんですがまったく違う答えが出ます。
どうすればいいでしょうか?
お願いします。
0850デフォルトの名無しさん
2014/02/11(火) 19:40:31.63試しにやってみたソースを上げてみ
0851デフォルトの名無しさん
2014/02/11(火) 20:30:39.08式に当てはめた処理の部分ですがお願いします。
double p = (27.0 * a * a * d) + (2.0 * b * b * b) - (9.0 * a * b * c) / (54.0 * a * a * a);
double q = (3.0 * a * c) - (b * b) / (9.0 * a * a);
double D = (p * p) + (q * q * q);
double kai = (-p + Math.Sqrt(D)) + (-q - Math.Sqrt(D) - b) / (3 * a);
0852デフォルトの名無しさん
2014/02/11(火) 20:32:53.78最後の行間違えました。
double kai = (-p + Math.Sqrt(D)) + (-q - Math.Sqrt(D)) - (b / (3 * a))
です。
0853デフォルトの名無しさん
2014/02/12(水) 06:23:32.00この時点でp=-1になっちゃうからuが求まらない事になっちゃうんだが
これも無理矢理虚数単位を使うのか?
0854デフォルトの名無しさん
2014/02/15(土) 17:36:21.180855デフォルトの名無しさん
2014/02/15(土) 18:31:29.95c++はVBの様な高級言語ではありません
0856デフォルトの名無しさん
2014/02/15(土) 18:38:56.03VBはC++のような低級言語ではありません
のほうが正しいような
0857デフォルトの名無しさん
2014/02/15(土) 19:28:53.770858デフォルトの名無しさん
2014/02/15(土) 20:03:15.58(#import, _bstr_t, _variant_t はかなり便利)
VBランタイムに備わってるライブラリが一式VCランタイムにあるかというと
そうじゃないので、実は併用最強なんだなきっと
VBは正直食わず嫌い
0859デフォルトの名無しさん
2014/02/15(土) 22:20:09.06VBでもいいんだよね、楽だし
生産性で考えるならUIをVBにするのが一番だとは思う
0860デフォルトの名無しさん
2014/02/16(日) 01:19:38.830861デフォルトの名無しさん
2014/02/16(日) 04:37:10.130862デフォルトの名無しさん
2014/02/16(日) 08:44:23.880863デフォルトの名無しさん
2014/02/16(日) 09:15:18.53士ねVB
VBAのせいで生き延びてるんだな
0864デフォルトの名無しさん
2014/02/16(日) 17:36:31.06言語が変わると環境も変わる。言語同士のブリッジはC++にしかできない。
WEBでは結構まとまってるようだが
0865デフォルトの名無しさん
2014/02/16(日) 20:39:15.880866デフォルトの名無しさん
2014/02/16(日) 23:34:14.420867デフォルトの名無しさん
2014/02/17(月) 14:48:00.87作ったものが用途に合わなくなったら捨てるという「前提」が
すっぽり頭から抜けてるやつばかりで困る
0868デフォルトの名無しさん
2014/02/17(月) 20:10:25.04三次方程式の解を求めるプログラムを作りたいと思ってます。
三つの異なる解を出す場合の処理がわかりません。
その処理の部分のソースがあります。
どうすればいいかアドバイスください。
三つの内、一つだけなら今のところ求められます。
double x, h, h2;
x = 0.0;
for (int n = 1; n < 100; n++)
{
h = (i[0] * x * x * x) + (i[1] * x * x) + (i[2] * x) + i[3];
h2 = (3.0 * i[0] * x * x) + (2.0 * i[1] * x) + i[2];
h = h / h2;
if (Math.Abs(h) < 0.000000000000001) break;
x = x - h;
kaitou[0] = x;
}
ニュートン法で、複数の解の一部または全部を取得するために初期値を定める一般的な方法はない
http://toro.2ch.net/test/read.cgi/tech/1313183984/652
0870デフォルトの名無しさん
2014/02/17(月) 21:33:53.110871デフォルトの名無しさん
2014/02/17(月) 21:45:24.210872デフォルトの名無しさん
2014/02/17(月) 22:05:14.97次の初期値は前に求まった解ってことでいいんですか?
それはたぶんうまくいかない
0874デフォルトの名無しさん
2014/02/17(月) 22:44:31.53ヒントください。
0875デフォルトの名無しさん
2014/02/17(月) 22:45:55.43山登り(または谷下り)するときに、頂上(谷底)でその斜面からより高い(低い)場所に向かって歩いて別の頂上(谷底)に到達できるの?君。
0876デフォルトの名無しさん
2014/02/17(月) 22:49:16.38リンク先に「どの解を求めるかによって初期値を人間が適切に判断しなければならない」とありますから
この部分はプログラムで自動化することは困難なのでは…
http://ryuiki.agbi.tsukuba.ac.jp/~nishida/lecture/numerical/Newton.html
0877デフォルトの名無しさん
2014/02/17(月) 22:57:14.32初期値はランダムでもいい
0878デフォルトの名無しさん
2014/02/17(月) 23:06:40.07数値微分
0880デフォルトの名無しさん
2014/02/17(月) 23:17:28.870881デフォルトの名無しさん
2014/02/17(月) 23:27:34.63局所最適解山乙
0882デフォルトの名無しさん
2014/02/18(火) 20:58:34.18あれからソース変えてみました。
ここから解を3つ出力できるようにできますでしょうか?
int count = 0;
double x = 0.0;
double h, h2;
for (int n = 1; n < 100; n++)
{
h = (i[0] * x * x * x) + (i[1] * x * x) + (i[2] * x) + i[3];
h2 = (3.0 * i[0] * x * x) + (2.0 * i[1] * x) + i[2];
h = h / h2;
x = x - h;
if (Math.Abs(h) < 0.000000000000001)
{
kaitou[count] = x;
count++;
n = 1;
x++;
}
if (count > 2.0)
{
break;
}
}
0883デフォルトの名無しさん
2014/02/18(火) 21:33:57.620884デフォルトの名無しさん
2014/02/18(火) 21:43:49.58何かアドバイスが欲しいのです。
0885デフォルトの名無しさん
2014/02/18(火) 22:49:13.10・試した結果、どう上手く行かなかったのか
のリストをまとめてからどうぞ
0886デフォルトの名無しさん
2014/02/19(水) 11:27:45.14>>885
> ・試した結果、どう上手く行かなかったのか
これを添えて質問するのは当たり前だろう
0887デフォルトの名無しさん
2014/02/19(水) 17:50:20.34コード読んでないけど、x++;をx=ldexp((rand()+(rand()*1.0/RAND_MAX))/RAND_MAX , (rand()%1024)-512);
とかにでもすれば?
0888デフォルトの名無しさん
2014/02/22(土) 01:24:47.68調べてみると.outはC言語の実行ファイルらしいというとこまでしかわかりませんでした
.outのファイルを開くとほとんど文字化けで見れないんですが
.outファイルを逆コンパイルして人間が読めるようなソースを作ることは可能なのでしょうか?
たすけてください
0889デフォルトの名無しさん
2014/02/22(土) 01:57:03.42あきらめろ
0890デフォルトの名無しさん
2014/02/22(土) 04:29:07.37「テキストファイルとして文字化けしてる」って認識になるはず無いんだが・・・釣りかね?
0891デフォルトの名無しさん
2014/02/22(土) 07:01:08.97→文字化けしてるからリコンパイルかな
って流れくらいわかるだろ
0892デフォルトの名無しさん
2014/02/22(土) 08:26:25.25流石に自分で全部調べられるレベルにないとやって欲しくないな
0893デフォルトの名無しさん
2014/02/22(土) 12:43:27.70ム板の天災 片山MZに師事しろ
http://toro.2ch.net/test/read.cgi/tech/1380002328/
0894デフォルトの名無しさん
2014/02/22(土) 14:18:02.72久々、C++でデスクトップアプリを作ろうと
思ってるんですが(何を作ろうとは考えて無いけど)
自分の持ってるVSって2005なんだけど
VSってmfc以外の利点は無いし
2005だからだからVC++も中途半端な作りだし
やっばVC++の新しいバージョンのEE入れたほうが良い?
それともマルチプラットフォームのQtが良い?
どなたか教えて!
0895デフォルトの名無しさん
2014/02/22(土) 14:28:24.140896デフォルトの名無しさん
2014/02/22(土) 15:13:47.520897デフォルトの名無しさん
2014/02/22(土) 15:52:59.73VS2005に、最新のEEのコンパイラ組み合わせてはどうか
>>896
gcc, clang もたしなみ
0898デフォルトの名無しさん
2014/02/22(土) 17:12:31.75無理
スキルがあるなら逆アセンブルしてパッチをあてるくらいだが
それすら現実的でない
助けてくださいということはクラックされて何か仕込まれた?
0899デフォルトの名無しさん
2014/02/23(日) 05:50:36.81class A {
static const char * sprit(const char* chr);
}
const char * sprit(const char* chr){
std::string str(chr);
const char subChr = substr(0,3).c_str();
return subChr;
};
という文字列を半分にするクラスを作成し、
const char * chr = A::sprit("123456");
if (!strcmp(chr,"123")){ }
という比較を行うと、真になって欲しいのですが
毎回結果が違ってしまいます。
chrの中を見ると「123」となってはいるのですが。
これは何を勘違いしているのでしょうか
環境はAndroid NDKです。
よろしくお願いします。
0900デフォルトの名無しさん
2014/02/23(日) 06:36:23.77値の比較をするならそうしよう
0901デフォルトの名無しさん
2014/02/23(日) 07:16:49.78つーか、AndroidNDKでC++なのか?
0902デフォルトの名無しさん
2014/02/23(日) 08:04:31.29ローカル変数のポインタを返してるからじゃないの?
0903デフォルトの名無しさん
2014/02/23(日) 17:33:03.17文字(Chr)と文字列(Str)すらごっちゃになってるし、spritはsplitだろうし、4行目A::が抜けてるし…
static const std::string A::split(const char* str){return std::string(str).substr(0,3);};
でよくね
0904デフォルトの名無しさん
2014/02/23(日) 20:23:03.88>>898
ありがとう、あきらめたよ
0905デフォルトの名無しさん
2014/02/23(日) 22:55:03.82コンテナに格納可能な最大数を返してくれるメソッドmax_sizeが以下のようになってたんですけど、
size_t max_size() const
{ return size_t(-1) / sizeof(_Tp); }
どうしてこれで求められるかが理解できません。
教えてください。お願いします。
0906デフォルトの名無しさん
2014/02/24(月) 00:20:59.56・size_tはunsignedだから、-1をキャストすると最大値が出る
・sizeof(_Tp)で要素1つ辺りのサイズが算出できる
そこから、vectorの実装に明るくない俺でも
・使えるのは最大で「size_tの最大値」バイトまでなんだろう
・それを要素1つ辺りのサイズごとに区切って使うのだろう
というくらいは推測するよ
まあ、区切るも何も、C/C++の仕様考えたら
ポインタに演算や添字与えりゃ済むんだろうが…
それ以上はもっかい自分できちんと。
処理系や実装者によって多少の差異があるかも?知らんけどw
0907デフォルトの名無しさん
2014/02/24(月) 00:36:44.71スパコン用とかどうにかそれが出来るC++実装がどこかに存在するのかな…
0908デフォルトの名無しさん
2014/02/24(月) 07:39:46.17メモリー確保できたかどうかわからないアーキテクチャなOSがあるんでな
最大サイズも「あれば使える」程度でいいんよ
0909デフォルトの名無しさん
2014/02/24(月) 08:21:53.96なるほど!
よくわかりました!
ありがとうございます。
0910デフォルトの名無しさん
2014/02/24(月) 17:01:31.550911デフォルトの名無しさん
2014/02/25(火) 20:59:02.95複数解を出力する場合の処理についてです。
ニュートン法で一つ目の実数解を出力した後に
次に二つの複数解の実数解を出しました。
次に虚数部を出したいと思うんですが
どう処理すればいいのかわかりません。
その処理をしているソースを載せます。
どう処理すればいいでしょうか?
0912デフォルトの名無しさん
2014/02/25(火) 21:01:10.22複素数解を出力する処理です。
変数imに虚数部を入れます。
for (int n = 1; n < 100; n++)
{
if (Math.Abs(h) < 0.000000000000001)
{
kai[count] = Math.Round(x, 13);
if (hanbetu > 0.0)
{
count++;
x = 10.0;
if (count == 2 && kai[0] == kai[1])
{
count--;
x = -10.0;
}
}
if (count > 1)
{
kai[2] = Math.Round((-(i[1] / i[0])) - (kai[0] + kai[1]), 13);
break;
}
else if (hanbetu < 0.0)
{
kai[1] = kai[2] = Math.Round((-i[1] / i[0] - kai[0]) / 2.0, 13);
im = (Math.Sqrt(3.0));
}
0913デフォルトの名無しさん
2014/02/28(金) 17:15:55.380914デフォルトの名無しさん
2014/02/28(金) 19:09:27.59OS依存のライブラリ等に自作ラッパ噛ますのってアリ?
本当はSDLって奴使いたかったんだけど
Windows8でXAudio2のバージョンが変わったとかでビルドできない…
0915デフォルトの名無しさん
2014/02/28(金) 22:51:40.35OS依存部分を直接自前ライブラリに実装して、プラットフォームごとに自前ライブラリ作りなおしてもええんやで
まぁあれだ、どうせ移植するときは自分でやるのが大半だろうし、自分で移植しやすいように書けばいい
0916デフォルトの名無しさん
2014/03/02(日) 23:13:36.04車輪の再設計になってもいいなら。GPLとかでよければ誰かがやってることが多い
それだけみんなおんなじことを考える
そのへんを度外視すれば、悪いことではない
0917デフォルトの名無しさん
2014/03/12(水) 15:44:24.41ID:Z46QAlOdハッピー
0918デフォルトの名無しさん
2014/03/12(水) 16:28:46.86ID:AZrAiCEG0919デフォルトの名無しさん
2014/03/12(水) 16:42:02.35ID:4AbABLKQPC等 [プログラム] C++相談室 part111
320 322-323
PC等 [プログラム] スレを勃てるまでもないC/C++の質問はここで 21
917
0920デフォルトの名無しさん
2014/03/18(火) 06:51:58.40ID:B0h8c5Jx0921デフォルトの名無しさん
2014/04/21(月) 10:53:42.17ID:CQ39bA+0.h は .cpp をどうやって認識してるの?
地味にこれが分らないから詳しく教えて下さい
0922デフォルトの名無しさん
2014/04/21(月) 11:03:30.57ID:lfASPZAR0923デフォルトの名無しさん
2014/04/21(月) 11:13:48.75ID:LiZ+Dtbr0924デフォルトの名無しさん
2014/04/21(月) 12:03:34.89ID:nKQE7Rc+.hには.cppの場所記入しないだろ?
.cppが.hを呼んでるだけだから
0925デフォルトの名無しさん
2014/04/21(月) 22:38:47.97ID:juP562jXこれをなんとかできませんか?
0926デフォルトの名無しさん
2014/04/21(月) 23:37:15.34ID:nKQE7Rc+0927デフォルトの名無しさん
2014/04/22(火) 18:46:43.93ID:f8JeFUsVerror LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
0928デフォルトの名無しさん
2014/04/22(火) 18:50:03.62ID:f8JeFUsV_Getpfirst(void)const " (__imp_?_Getpfirst@_Container_base12@std@@QBEPAPAU_Iterator_base12@2@XZ) が関数
"protected: void __thiscall std::deque<short *,class std::allocator<short *> >::_Orphan_off(unsigned int)const "
(?_Orphan_off@?$deque@PAFV?$allocator@PAF@std@@@std@@IBEXI@Z) で参照されました。
error LNK2019: 未解決の外部シンボル "public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)
が関数 "protected: bool __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::_Grow(unsigned int,bool)"
(?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z) で参照されました。
error LNK2019: 未解決の外部シンボル "public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)
が関数 "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
& __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::
assign(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
const &,unsigned int,unsigned int)" (?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z) で参照されました
0929デフォルトの名無しさん
2014/04/22(火) 18:50:46.37ID:f8JeFUsVerror LNK2038: 'RuntimeLibrary' の不一致が検出されました。値 'MTd_StaticDebug' が MDd_DynamicDebug の値 'main.obj' と一致しません。
error LNK2038: 'RuntimeLibrary' の不一致が検出されました。値 'MTd_StaticDebug' が MDd_DynamicDebug の値 'main.obj' と一致しません。
error LNK2038: 'RuntimeLibrary' の不一致が検出されました。値 'MTd_StaticDebug' が MDd_DynamicDebug の値 'main.obj' と一致しません。
error LNK2038: 'RuntimeLibrary' の不一致が検出されました。値 'MTd_StaticDebug' が MDd_DynamicDebug の値 'main.obj' と一致しません。
0930デフォルトの名無しさん
2014/04/22(火) 19:05:35.72ID:yUACokf4最低でもMTとMDのオプションぐらい合わせろ。
ていうか(恐らく)バージョンの違うテンプレートライブラリでリンクしようとすんな。
0931921
2014/04/23(水) 22:39:38.56ID:qwt0uHqN.cpp だけじゃどんな問題があるの?
0932デフォルトの名無しさん
2014/04/23(水) 22:43:29.29ID:U/+ppQ2B0933デフォルトの名無しさん
2014/04/23(水) 22:45:26.25ID:V34cTVQA多数の.cppを別々にコンパイルできます。
各.cppで、共通部分を.hで宣言しておけばコンパイルできます。
リンクするとき、まだコンパイルしていない.cppがあれば、エラーになります。
0934デフォルトの名無しさん
2014/04/23(水) 22:48:20.65ID:V34cTVQAC++は、いろいろ勉強しないとなぁ
0935デフォルトの名無しさん
2014/04/23(水) 23:57:20.36ID:8aJ+1hBq0936デフォルトの名無しさん
2014/04/24(木) 01:49:00.51ID:9wgxQ0KXここで、他のファイルのヘッダをインクルードすると、
返り値の型 f(引数の型);
というようにヘッダの内容が展開されて、
他のファイルにある、関数の型が事前にわかる(前方宣言)
よってここで、f()の実装を知らないのに、正しい型で使える
複数のファイルによる、並行・分散、開発・コンパイル時に、
ひとまず宣言だけあれば、実装がなくてもコンパイルできる
と同時に他人が、f()の中身を作る
0937デフォルトの名無しさん
2014/04/24(木) 02:34:34.09ID:V/BmNssB難しさの基準による
ちょっとしたことで低水準に踏み込まざるを得なくなるCと、ひたすら機能が多く複雑な言語であるC++
0938デフォルトの名無しさん
2014/04/24(木) 09:58:11.17ID:mnsZs1hI難しい
実際にC++を使ってる人間の間ですら
極端にイメージするものが違うのも一因
0939デフォルトの名無しさん
2014/04/24(木) 11:22:47.53ID:5ftIJb20C++こそ正当なオブジェクト指向言語だと思い込んでたり・・
0940デフォルトの名無しさん
2014/04/24(木) 15:55:03.07ID:29x10p2Y本物のプログラマたちが使う唯一のプログラム言語だよ
0941デフォルトの名無しさん
2014/04/24(木) 16:08:35.89ID:mnsZs1hI0942デフォルトの名無しさん
2014/04/24(木) 18:53:13.69ID:fAk9I7UTその見解も偏見だと思うけどな
Cから入って、C++のクラスは特定の使い方を想定して砂糖まぶした構造体だと理解する人も結構居るだろ
だからと言ってオブジェクト指向の源流を辿りに行くかどうかは別問題だが…
あれだ、関数型言語を食わず嫌いしてる手続き型言語ユーザだって、そういう概念があることは知ってる的な
0943デフォルトの名無しさん
2014/04/24(木) 19:58:37.02ID:AklGWvZ+0944デフォルトの名無しさん
2014/04/24(木) 20:06:48.17ID:mnsZs1hI0945デフォルトの名無しさん
2014/04/24(木) 20:16:31.22ID:E/S2XTBi0946デフォルトの名無しさん
2014/04/24(木) 21:03:48.20ID:tXCIarBmその理解だと virtual の存在意義にしばらく悩むことになる
>>945
SjLj 以外の実装を知りたいものだ
0947デフォルトの名無しさん
2014/04/24(木) 22:04:47.58ID:fAk9I7UTえ?関数ポインタの入った構造体へのポインタを砂糖振って使いやすくした奴でしょ、あれ。
やっぱ、C++流オブジェクト指向って使い方を想定して砂糖まぶした構造体じゃないですか。
// この理屈で行くと様々なプログラミング言語の機能が〜に毛が生えただけになりますが。
0948デフォルトの名無しさん
2014/04/24(木) 22:43:05.57ID:7Hb7UgBCその派生クラスを別のクラスのメンバーとすることを継承って言うの?
0949デフォルトの名無しさん
2014/04/24(木) 22:56:22.26ID:tXCIarBmどちらかというと委譲という気が
0950デフォルトの名無しさん
2014/04/25(金) 08:28:10.22ID:cnGbwKBG派生クラスを定義する所までか派生じゃね?
0951デフォルトの名無しさん
2014/04/25(金) 14:12:44.94ID:kZbj9xjz継承と委譲の違いを教えて
0952デフォルトの名無しさん
2014/04/25(金) 14:22:59.64ID:zjeu9d2L0953デフォルトの名無しさん
2014/04/25(金) 15:25:06.04ID:jPmvuOB60954デフォルトの名無しさん
2014/04/25(金) 16:03:08.19ID:uPsm+e3e継承は例えば親クラスの ret_type func(Nanka* arg) を使いたかったら
以下のようにする
class Foo : public vritual OtherClass
{//以下省略
委譲は例えば他のクラスの ret_type func(Nanka* arg) を使いたかったら
以下のようにする
class Goo
{
private:
OtherClass* m_pDelegator;
public:
ret_type func(Nanka* arg){
return m_pDelegator->func( arg );
}
};
0955デフォルトの名無しさん
2014/05/06(火) 19:03:17.01ID:2s3fltSJいちいち辞書を引いて、誰も読めない正しい英語を書くのはもううんざり
0956デフォルトの名無しさん
2014/05/06(火) 19:36:25.17ID:wMsmsiA/0957デフォルトの名無しさん
2014/05/06(火) 20:42:03.54ID:Jq5zOSvx返答ありがとう
委譲の方、Goo のコンストラクタにも何かしら要るんじゃないの
0959デフォルトの名無しさん
2014/05/06(火) 23:18:08.81ID:i07kpOvT以下のプログラムをグローバル変数を使わず同じ処理をさせるにはどうすればいいのでしょうか?
グローバル変数を使うのはあまり良くないと聞いたのですが、どうにもそのやり方が思い浮かびません。
簡単にでもいいので、よろしくお願いします。
#include<stdio.h>
int life=1000;
int Atk(int damageSatan){ // (勇者のライフ−被ダメ) を処理する関数
printf("魔王の攻撃。勇者は%dのダメージを受けた\n",damageSatan);
return life - damageSatan;
}
int Recover(int kaifuku){ // (勇者のライフ+回復) を処理する関数
printf("勇者は薬草を使った。%d回復した。\n",kaifuku);
return life + kaifuku;
}
void gennzai(void){ //現在のライフを書き出すだけの関数
printf("現在のライフ%d\n",life);
}
int main(void){
gennzai();
life=Atk(400);
gennzai();
life=Recover(50);
gennzai();
life=Atk(200);
gennzai();
while(1){};
}
0960デフォルトの名無しさん
2014/05/06(火) 23:25:50.28ID:XedF2XR60961デフォルトの名無しさん
2014/05/06(火) 23:31:57.27ID:i07kpOvTその辺は初心者ということで目を瞑っていただきたいです。
コメントはつけていなかったのですが、他人が見る時に有ったほうがいいと聞いていたので
適当ではありますが急遽付け足しました。
命名規則もおいおい勉強していきたいと思います。
0962デフォルトの名無しさん
2014/05/06(火) 23:32:25.81ID:WjTWSVZoこれじゃあかんの?
ttp://ideone.com/iVu0sr
0963デフォルトの名無しさん
2014/05/06(火) 23:43:12.17ID:i07kpOvTおお!わざわざこんなサイトまで使って直していただいてありがとうございます。
コピペしてビルドしてみたら全く同じ結果になりました。
各関数の引数にそれぞれlifeを入れたら良かったんですね!
書いていただいたソースをよく見て勉強してきます
どうもありがとうございました!
0964デフォルトの名無しさん
2014/05/06(火) 23:47:21.66ID:WjTWSVZo結果が全てならいいけど
スマートかどうかは別問題だからね
0965デフォルトの名無しさん
2014/05/06(火) 23:51:26.58ID:i07kpOvT今のところはスマートさとか考えている余裕はありませんが、スマートな方が当然良いですよね
頑張ります
0966デフォルトの名無しさん
2014/05/10(土) 15:00:59.73ID:xgj3yjgVある数(scanfのやつ使って文字適当に決める)の100の位を出す問題なんだけどわからないです。例えば実行ファイルで12345の数を打ったら百のくらいは"3"ですみたいなのを出したい
0967デフォルトの名無しさん
2014/05/10(土) 15:01:46.01ID:xgj3yjgV書き忘れました。c言語です
0968デフォルトの名無しさん
2014/05/10(土) 16:43:54.14ID:O2yhZ3exだけじゃないの?
0969デフォルトの名無しさん
2014/05/10(土) 16:52:59.19ID:O2yhZ3exやっつけテストプログラム
0970デフォルトの名無しさん
2014/05/10(土) 18:04:23.64ID:ZLXGU8kN色々な方法で求めることができるんですね
0971デフォルトの名無しさん
2014/05/10(土) 18:16:35.41ID:8M00MQ+Z0972デフォルトの名無しさん
2014/05/10(土) 18:22:29.28ID:nO3jje8t0973デフォルトの名無しさん
2014/05/10(土) 18:55:51.81ID:8M00MQ+Z0974デフォルトの名無しさん
2014/05/10(土) 19:17:15.28ID:DcycXvUUどうしたらできる?
0975デフォルトの名無しさん
2014/05/10(土) 19:23:11.05ID:vWx61Bp40976デフォルトの名無しさん
2014/05/10(土) 20:17:50.50ID:KdDOFXms0977デフォルトの名無しさん
2014/05/10(土) 23:34:24.62ID:SFO++ycjダブルクオーテーションでくくるのと
- マイナス記号でのフィルタくらい覚えろよ
0978デフォルトの名無しさん
2014/05/11(日) 08:17:43.20ID:HBJbY+fyそういう奴はどうやってこのスレに到達してんだろうな…
0979デフォルトの名無しさん
2014/05/11(日) 09:34:39.63ID:NXvs+Rfo> 現在のプロセスのカレントディレクトリを取得します。
http://msdn.microsoft.com/ja-jp/library/ms235450.aspx
> getcwd
> この POSIX 関数は使用されなくなりました。 代わりに、ISO C++ に準拠する _getcwd を使用します。
0980デフォルトの名無しさん
2014/05/11(日) 16:45:17.33ID:bK9D/oLg二次元配列を引数に持つ関数を作りたい場合、
以下のような感じにしたいのですが、これではエラーします。
最もお勧めの書き方を教えてください。
int func1(int **array, int rows, int cols)
{
int sum = 0;
for (int r = 0; r<rows; r++){
for (int c = 0; c<cols; c++){
sum += array[r][c];
}
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
const int rows = 5;
const int cols = 3;
int array[rows][cols];
for (int r = 0; r<rows; r++){
for (int c = 0; c<cols; c++){
array[r][c] = r * 10 + c;
}
}
sum = func1(array, rows, cols);
printf("sum=%d\n", sum);
return 0;
}
0981デフォルトの名無しさん
2014/05/11(日) 17:10:31.97ID:5s3TJsCSこれでおk
0982デフォルトの名無しさん
2014/05/11(日) 17:29:43.32ID:NXvs+Rfohttp://ideone.com/ng8IFq
0983デフォルトの名無しさん
2014/05/11(日) 18:04:41.37ID:HBJbY+fy2次元配列はポインタのポインタではない。
1次元配列で長さをcols*rowsにしてrow*rows+colまたはcol*cols+rowでアクセスするとかが定番、かな。
0984デフォルトの名無しさん
2014/05/11(日) 18:51:15.18ID:bK9D/oLg>>981
int**& に変更してもビルドできませんでした。もう少し解説お願いします。
>>982
良いアイディアですね。参考にさせてもらいます。
>>983
やはりそういう作戦しか無いのでしょうか?
可変長な二次元の配列をそのまま渡すことはできない、C99 でも。
malloc() か alloca() を使うのが定番だと思う
alloca() 版:http://ideone.com/ThAqqJ
0986デフォルトの名無しさん
2014/05/11(日) 22:42:24.03ID:i3EWh+tv0987デフォルトの名無しさん
2014/05/11(日) 23:09:23.22ID:oDuibFuc文字コードの意味をよく理解していないですが
例えば
char str[80];
int num;
scanf("%s",str)
num = str - '0';
aを入力した場合
97ー48で49がnumに入り
%dで出力したら49がでるのでしょうか。
ならばこれを%cで出力したら1?
今実行環境がありません;;
0988デフォルトの名無しさん
2014/05/11(日) 23:13:26.83ID:dGFiGG7Z0989デフォルトの名無しさん
2014/05/12(月) 00:20:43.71ID:4z9QgUFm結果が違う…と思ったら、rowsとcolsの値が逆なのか
0990デフォルトの名無しさん
2014/05/12(月) 00:24:19.82ID:DwqGETIpごめん間違えた‥
0991デフォルトの名無しさん
2014/05/12(月) 00:44:03.93ID:DwqGETIphttp://ideone.com/L3DLPJ
0992デフォルトの名無しさん
2014/05/12(月) 02:04:30.11ID:8m8uDaT+サンプルありがとうございます。参考になりました。
>>可変長な二次元の配列をそのまま渡すことはできない、C99 でも。
なるほど、そういう事なんですね。二次元配列は諦めて、
allocaで行きます。
0993デフォルトの名無しさん
2014/05/12(月) 11:53:45.09ID:4z9QgUFmhttp://d.hatena.ne.jp/tondol/20090713/1247426321
に多次元配列の実装方法の例があるので参考にしてみるといい。
>>985 は「各行のデータを保持する配列と各行へのポインタを保持する配列に分けて確保」の方法
>>983 は「1次元配列として確保」の方法
俺は「各行のデータを保持する配列を連続した領域で確保」の方法が好き。
0994デフォルトの名無しさん
2014/05/13(火) 00:33:24.98ID:1g/5f/R+マジでそれアスペの手前だよ
何とかするのオススメ
0995デフォルトの名無しさん
2014/05/13(火) 00:39:58.94ID:VL3miRAMgnuglobalを使ってみたのですが、
callee( )がsrc.cppの100行目から呼ばれるという情報は取得できるのですが、
私が欲しいcallee( )がsrc.cppのcaller( )から呼ばれる、という情報は取得できません。
OSはLinuxです。
gnuglobalで私の欲しい情報を得る方法、もしくは
別のツールがあれば教えて下さい。
0996デフォルトの名無しさん
2014/05/13(火) 00:43:41.91ID:BZ1B9xOmLIST.begin() <= LIST.end()
LIST.rbegin() <= LIST.rend()
これらがtrueであることは保障されてますか?
0997デフォルトの名無しさん
2014/05/13(火) 00:47:42.44ID:wwrEnEuU必ず != を使いましょう
0998デフォルトの名無しさん
2014/05/13(火) 00:51:28.09ID:LTUGkVaDvectorは保証されていると考えて問題無いと思う。
listは保証されていない。
0999デフォルトの名無しさん
2014/05/13(火) 00:54:39.88ID:BZ1B9xOm!= を使うようにします
1000デフォルトの名無しさん
2014/05/13(火) 00:54:56.84ID:LTUGkVaDすまん、見間違えた。
rbeginとrendだったとは。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。