[過去ログ] C++相談室 part130 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(2): 転載ダメ©2ch.net (ワッチョイ f37a-QmV0) 2017/03/31(金)08:47 ID:UkLjKqcm0(1) AAS
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part129
2chスレ:tech
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
省7
2: (ワッチョイ bf54-lR6P) 2017/03/31(金)16:52 ID:CoeIAoH10(1) AAS
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
省4
3(2): (ワッチョイ 3f78-QHHb) 2017/03/31(金)17:03 ID:qlAKv2q70(1) AAS
>>1乙
4: (ワッチョイ ef14-oQcP) 2017/04/01(土)09:35 ID:JSPgwSTt0(1/2) AAS
テンプレートで曖昧なものは強制的に解決させる方法ってあります?
template<typename A, typename B> void func(A a, B b);
func(2.f,3.f); // float
func(2.,3.); // double
func(2.f,3.);// floatで呼び出したい
5: (オッペケ Sr17-bOuD) 2017/04/01(土)10:06 ID:vvD/Bq3hr(1/2) AAS
こういう質問を見ると
何処に落とし穴が有るのだろうと勘ぐってしまう
6: (ワッチョイ d3a6-agmj) 2017/04/01(土)10:15 ID:vxnrpS460(1) AAS
「強制的に」の解釈だろうね
7(1): (ワッチョイ cf29-MCV6) 2017/04/01(土)10:21 ID:8wn5/JcH0(1) AAS
func<float, float>(2.f, 3.);
8(1): 今日は何の日? (ワッチョイ bf7a-mgDT) 2017/04/01(土)11:36 ID:3A8hlFXh0(1) AAS
'f' 一文字で済む方法が2行上に示されているが…
func(2.f,(float)3.); // てへっ
出題の意図は func(2.f,3.); には手を加えないでということかにゃ?
スペシャライゼーションか非テンプレート版でイグザクトマッチを
用意すればいいじゃないかな
func(2.,3.f); の時は float 優先なのか第一引数優先なのか
ロジックによっては元の設計を見直すべきかも
9: (ワッチョイ ef14-oQcP) 2017/04/01(土)11:43 ID:JSPgwSTt0(2/2) AAS
>>8
>出題の意図は func(2.f,3.); には手を加えないでということかにゃ?
そういうことです
static_castが可能な型同士に限定されるとは思いますが
>スペシャライゼーションか非テンプレート版でイグザクトマッチ
なるほど
なおfunc(2.,3.f)でもfloatですね
10: (ワッチョイ a356-8BmZ) 2017/04/01(土)11:59 ID:gOIdtRSt0(1) AAS
お前にテンプレートはまだはやい
11: (オッペケ Sr17-bOuD) 2017/04/01(土)12:50 ID:vvD/Bq3hr(2/2) AAS
>スペシャライゼーションか
実用性皆無の糞コードしか想像出来ない
12: (ワッチョイ 3f3b-MCV6) 2017/04/01(土)18:22 ID:2DXDopa10(1) AAS
そもそも糞コードしか書けない人は何に対してもそうだろ
13: (ワッチョイ f37a-QmV0) 2017/04/01(土)19:25 ID:Pijd2zbh0(1/2) AAS
練習しなきゃ良いコードは書けるようにならない
14(1): (オッペケ Sr17-bOuD) 2017/04/01(土)19:35 ID:iUvRbgEsr(1) AAS
そうだな
ただ練習したら必ず良いコードが書ける訳でもない
例えばPODをコピーするのにpragma pack1してmemcpyし始めるK&Rおじさんとか
15: (ワッチョイ f359-HQfx) 2017/04/01(土)19:38 ID:p1TV7r2C0(1) AAS
個人的には関数引数の弱い型への変換という
C++言語規約上の暗黙的変換とは逆の流れを引き起こすような記述を
通常と同じような見かけの記述にすることは紛らわしいと希ガス
コード共通化を重視するなら>>7に従うか、あるいはfunc(2.f, 3.f)にするとかして呼び出し元で型を明示し、
そうではなくて弱い型への暗黙的変換を伴うバージョンのfunc()が他とは別のコードになる(スペシャライゼーション対象足りえる
なら、スペシャライゼーションの代わりにfuncを別名にするとかとにかく一目でわかるようにするのが実用的
かと、
16: (ワッチョイ f37a-QmV0) 2017/04/01(土)21:58 ID:Pijd2zbh0(2/2) AAS
>>14
練習とは既にあるより良い方法を真似することだから身につかないのは練習になっていないかやる気が無いかだ
17(1): (ワッチョイ 3f6f-MCV6) 2017/04/02(日)07:31 ID:NX0JHgEX0(1) AAS
誰か15を日本語訳してくれ
18(1): (オッペケ Sr17-bOuD) 2017/04/02(日)07:42 ID:0DgUIb4er(1/2) AAS
>>17
・func(0.0f, 0.0)は一見精度落ちない様に見えるがfloatに落ちるのが嫌
・だからfnuc<float>の様な明示的な呼び出しにするか、fnuc_fの様な名前で工夫すべき
・template<> func<double,float>なんて特殊化する暇があったら
非テンプレートのfuncf作れ
・つまりfloat v;「v=0.0;」もコンパイラーの警告だけなのでNG
・もう変数名はシステムハンガリアンしか無いぜ
19: (オッペケ Sr17-bOuD) 2017/04/02(日)08:00 ID:0DgUIb4er(2/2) AAS
型変換に於ける定数のルールはC++11で見直されたので
「v=0.0;」は例が良くなかったな。まあいいか
20: (ワッチョイ f359-HQfx) 2017/04/02(日)08:01 ID:M04XElTC0(1) AAS
>>18
最後の二つはイラン
やっても良いが第1項目の対策としては過剰すぐる、
21: (ワッチョイ bf6b-agmj) 2017/04/02(日)11:47 ID:XLcHLDuG0(1) AAS
計算がメインの、建築用CADとか、航空流体力学のちょっとしたソフトとかだと、過剰ではないかもしれない
doubleとfloatとでの四つの組み合わせがちょくちょく登場する計算、
funcのfloatとdoubleの組み合わせで厳密に誤差計算しているような気がする
もしもそうだとすると単精度の誤差すらも気にするようなヤバいシステムがコードの背後に見える
……トカマク式核融合炉の制御ソフトの一部かもな
22: (スッップ Sddf-M0et) 2017/04/03(月)21:44 ID:muLND53td(1/2) AAS
AD変換器なんてノイズ多い環境じゃ16bit以上のものなんて使えないぞ
電力関係なら12bit位だろ
いかにその分解能でしっかり制御するかが重要で
算数的な精度なんてどーでもいいのさ
23: (ワッチョイ b310-MCV6) 2017/04/03(月)21:49 ID:iUZo1Vn10(1/2) AAS
最後の1行を除き同意
24: (スッップ Sddf-M0et) 2017/04/03(月)22:07 ID:muLND53td(2/2) AAS
偉い人向けに表示上だけは電卓に合わせないとうるさいって話かな
25: (ワッチョイ f37a-QmV0) 2017/04/03(月)22:36 ID:rMPFCCT20(1) AAS
電池とかのラインで使われてる計測器だと有効なのは小数点以下は3桁くらいまでかな
26: (ワッチョイ b310-MCV6) 2017/04/03(月)22:41 ID:iUZo1Vn10(2/2) AAS
最小目盛りの10分の1
27(1): (ワッチョイ ef14-oQcP) 2017/04/03(月)22:48 ID:teq5sGj/0(1/3) AAS
数学的なベクトルのクラスで
template<int N> vec{ double v[N];};
などとした場合、コンストラクタで各成分を指定したいようなときって
どうするのが筋ですかね?
それとも引数の数が変わるのがわかってるようなケースはテンプレートすべきではない?
28: (オッペケ Sr17-bOuD) 2017/04/03(月)22:59 ID:/XngI6+6r(1) AAS
こういういかにもな質問を見ると、
何処に落とし穴が有るのだろうと勘ぐってしまう
29: (ワッチョイ bf80-QHHb) 2017/04/03(月)23:08 ID:BzAHvGte0(1) AAS
>>27
俺は配列で初期化して渡してる。
一瞬本末転倒な気もするが、これが一番スッキリする。
30(1): (ワッチョイ ef14-oQcP) 2017/04/03(月)23:15 ID:teq5sGj/0(2/3) AAS
double d[]={0.,1.,2.};
vec v(d);
みたいなことですかね?
あと今思いついたのは共通に処理できるところだけ
template<int N> struct vec_base{double v[N];}
template<int N> struct vec {};
template<>strct vec<3> : public vec_base<3>{ vec(double, double, double);};
みたいな
31: (ワッチョイ bfcd-jsM4) 2017/04/03(月)23:18 ID:xWKBtMgw0(1) AAS
可変長テンプレートじゃだめなの
32: (ワッチョイ ef14-oQcP) 2017/04/03(月)23:38 ID:teq5sGj/0(3/3) AAS
そんなのありましたね・・・
調べてみます
33: (ワッチョイ bfcc-hXdu) 2017/04/04(火)02:27 ID:cqsAbaT40(1) AAS
template<int... args>
34: (ワッチョイ 733c-kVPK) 2017/04/04(火)12:47 ID:CFV3B2Uw0(1) AAS
Nは要素数だからそれじゃダメやろ
35: (スッップ Sddf-mnw5) 2017/04/04(火)13:09 ID:6xG2515ud(1) AAS
template <typename... T> は機能するけどこの場合ちょっとやだな
36: (ワッチョイ 3f91-MCV6) 2017/04/04(火)15:20 ID:SRqXkALx0(1) AAS
sizeof... の使いどころじゃね?
37: (オッペケ Sr17-bOuD) 2017/04/04(火)17:42 ID:Xbh3DIbfr(1/2) AAS
質問者がコンストラクターを使用したいと言っている以上
残念なコードになることは不可避
static_assertでも入れとくしかない
38: (オッペケ Sr17-bOuD) 2017/04/04(火)20:17 ID:Xbh3DIbfr(2/2) AAS
ネタも投下されないようなので取り敢えず貼っとくか
外部リンク:ideone.com
39: (ワッチョイ bf80-QHHb) 2017/04/04(火)20:55 ID:vk9hQqDM0(1) AAS
>>30
まさにそれ。
イロイロ思考した末にそこに辿り着いた。
C++11以降なら初期化リストやstd::arrayが使えるんだけどね…
40(1): (ワッチョイ cf59-dxaC) 2017/04/06(木)07:41 ID:aL+qmOiO0(1) AAS
質問ですが、bool型の変数x値(true/false)をint型の1/0に変換する場合、
(int)xで正しいの?それとも演算子を使ってx!=falseとか!!xとすべき?
あるいは
int y; if(x) { y = 1; } else { y = 0; }
式にやらなきゃダメ?
そもそもC++においても「!」、「!=」、「==」(オーバーロードされていないやつ)はintを返すんやろうか…
41: (ワッチョイ be14-4Usw) 2017/04/06(木)07:49 ID:XYhavOUb0(1) AAS
x?1:0
42(2): (ワッチョイ f3b4-GJ90) 2017/04/06(木)08:13 ID:WJuxfIBi0(1) AAS
N4660の
7.6p6
8.3.1p9
8.10p1
あたりを読んでから質問するという発送は無いものか
43: (ワッチョイ 7f93-+TA9) 2017/04/06(木)08:18 ID:3pIc1pJU0(1/3) AAS
>>40
std::cout << typeid(!0).name();
こんくらいやってみた?
44: (オッペケ Sr57-GJ90) 2017/04/06(木)08:36 ID:8pWbCGLcr(1) AAS
一般人はtypeidを知らない可能性があるが
auto x = (0 == 0);
と書いてxの上にマウスカーソルを持って行く知能は欲しいところ
45: (ワッチョイ 7f93-+TA9) 2017/04/06(木)08:49 ID:3pIc1pJU0(2/3) AAS
一般人てコンパイラって何?な人?
46: (オッペケ Sr57-GJ90) 2017/04/06(木)10:25 ID:zY+rYc0kr(1/2) AAS
企業に勤めていて日常的にC++言語を使うような人、かな
47: (ワッチョイ 7f93-+TA9) 2017/04/06(木)11:12 ID:3pIc1pJU0(3/3) AAS
日常的にC++使っててtypeid知らないなんて死刑だろ
48: (スッップ Sd92-dvjh) 2017/04/06(木)11:30 ID:b6mS5n8zd(1/2) AAS
知っていても使わないなあ
試しに実験したことはあるかも
49: (スッップ Sd92-dvjh) 2017/04/06(木)11:30 ID:b6mS5n8zd(2/2) AAS
C++たまにしか使いません
50(1): (ワッチョイ fb4a-TXVw) 2017/04/06(木)18:35 ID:H/56SjdK0(1/4) AAS
少し前からDXライブラリの勉強を始めました
「ポンクソフト」というサイトさんの「C/C++言語とDXライブラリでゲーム作成入門」というページを真似ながら勉強しています
そこの「6.オセロの作成」に先程着手したんですが、何度見返しても以下のエラーが出て実行できません
一つ目:コードC3872「'0x200e':この文字を識別子で使用することはできません」行67
二つ目:コードC3872「'0x200e':この文字を識別子で使用することはできません」行80
解決方を求めて「C3872」「0x200e」などと検索したんですが、解決方を見つけることは叶いませんでした
どなたか私に原因と解決方を教えて下さい
51(2): 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd92-+G+c) 2017/04/06(木)18:43 ID:0SmLVS9od(1) AAS
>>50
全角文字と半角文字の違いに気を付けて。コンピュータは全角と半角を区別する。
52(2): (ワッチョイ f26b-D6lx) 2017/04/06(木)18:43 ID:oAa8xYYx0(1) AAS
そこのURLを貼ってくれると話はさらに早くなる
53: (ワッチョイ fb4a-TXVw) 2017/04/06(木)18:53 ID:H/56SjdK0(2/4) AAS
>>51
エラーの出た行を3回ほど確認しましたが全角文字は見当たりませんでした
>>52
「外部リンク:ponk.jp」です
54(1): (オッペケ Sr57-GJ90) 2017/04/06(木)19:06 ID:zY+rYc0kr(2/2) AAS
そりゃpriorityの後に変な文字が入ってるからな
U+200EはC++で使っていい文字に入っていない
55(1): (ワッチョイ f22a-UNHW) 2017/04/06(木)19:17 ID:NIAe6HmI0(1) AAS
確かに67行目と80行目の"priority"の右に見えない文字 (LRM) が入ってるね
なんでこんなもんが紛れてるのか謎だけどそれを消せばコンパイル通るんじゃない
56: (ワッチョイ fb4a-TXVw) 2017/04/06(木)19:19 ID:H/56SjdK0(3/4) AAS
>>54
今まで見るだけの確認作業してましたがpriorityの直後でdeleteキー押したら確かに謎の文字が消えました!
>>51-52>>54
質問に答えていただきありがとうございました
57(1): (ワッチョイ fb4a-TXVw) 2017/04/06(木)19:23 ID:H/56SjdK0(4/4) AAS
>>55
消したらコンパイル通りました
今までは「サイトのコピペ」→「解説読んで納得」→「各文に自分が分かるようにコメント付け」という方法で勉強してたので、
これを機にコピペはやめて全て自分で打ち込むことにします
ありがとうございました
58: (ワッチョイ cf7a-02AM) 2017/04/06(木)20:18 ID:yrLcUnI00(1) AAS
>>42
普通その数字が何を意味するのかすらわからねえよ
59: (ワッチョイ 52c3-7E04) 2017/04/06(木)21:09 ID:i8ka60Xp0(1) AAS
>>42
なんで贈り物送らないといけないのか
60: (ワッチョイ cfb5-H1JN) 2017/04/07(金)00:12 ID:GKfKrOhh0(1) AAS
>>57
コピペ後に理解というやり方から
理解した上で打ち込むって考え方がいいと思うよ
実務でも似たような処理をコピペした時に
別の変数参照するように変える必要があったのに
1ヶ所変え忘れて問題になった何て言う事例もありがち
61: (ワッチョイ d2ed-2ODd) 2017/04/07(金)00:44 ID:T22AFNFv0(1) AAS
勉強中は兎も角、実務でコピペコーディングしてバグ仕込むとか入念に拷問した後死刑でも仕方ないレベルだからな
62: (ワッチョイ cf7a-02AM) 2017/04/07(金)01:17 ID:hMKnjdw+0(1) AAS
そんなにコピペすることってあるか?
63: (ワッチョイ 0775-yu7M) 2017/04/07(金)02:53 ID:k32kujyO0(1) AAS
ないアルよ
64: (ワッチョイ fb79-xvm/) 2017/04/07(金)03:15 ID:2Lzx/lCN0(1) AAS
まあ、スニペットなんて言い方してても実態はコピペだからな。
65: (ワッチョイ 2213-D6lx) 2017/04/07(金)12:08 ID:9gQAwyyc0(1) AAS
プログラミングなんて同じことの繰り返しなんだから、コピペで済ませたほうがいいよ
66: (スップ Sdb2-C2yt) 2017/04/07(金)12:42 ID:ykM1heJrd(1) AAS
コード書いてていうほどコピペしなくね
67: (ワッチョイ 138f-+TA9) 2017/04/07(金)14:14 ID:FkJcTuLk0(1/2) AAS
コピペしなきゃいけない自分が情けなくなるね
同じことを二度は言わないスマートさが足りないんだって
68(1): (JP 0H2e-TKAZ) 2017/04/07(金)15:08 ID:4pSi19lZH(1) AAS
static int a[]; // prototype
static int a[] = {1,2,3,4};
int getitem(int n) {
return a[n];
}
このコード、
gcc -Wall -c -o hoge.o hoge.c
だったら何のエラーも警告も出ないけど、
g++ -Wall -c -o hoge.o hoge.c
だとaのサイズがわからん、とエラーになるんですが、
省1
69(1): (ワッチョイ 138f-+TA9) 2017/04/07(金)17:44 ID:FkJcTuLk0(2/2) AAS
namespace
{
extern int a[]; // prototype
int a[] = {1,2,3,4};
}
int getitem(int n) {
return a[n];
}
70: (オッペケ Sr57-GJ90) 2017/04/08(土)12:17 ID:TFmwEDa6r(1/2) AAS
extern int a[]; はprototypeじゃないけどな
71(1): (ワッチョイ cf59-dxaC) 2017/04/08(土)13:44 ID:L4KgTOQ90(1) AAS
未だにexternの役割がよくわかんね;
付けなくても宣言できて勝手に外部リンケージになるし…
K&R本はどっか行った;
72: (ワッチョイ 138f-+TA9) 2017/04/08(土)16:54 ID:LBU0hU+r0(1/2) AAS
実体を定義するのかしないのか曖昧なところをはっきりさせたり
デフォで内部結合なものを強制的に外部結合させたり
無名namespaceは逆で強制的に外部結合なものに妨害工作する
73: (アウアウイー Sa97-lIlP) 2017/04/08(土)17:25 ID:8P1QJwbCa(1/3) AAS
>>69の方がC++としてモダンなのはわかるが、>>68がC++だけエラーになる理由がわからん。
gcc以外のコンパイラでもだめなんだろうか?
74: (ワッチョイ fb56-Hufg) 2017/04/08(土)17:34 ID:8rt7+cSn0(1) AAS
//static int a[]; // prototype
static int a[] = {1,2,3,4};
これでOK
75(2): (アウアウイー Sa97-lIlP) 2017/04/08(土)17:54 ID:8P1QJwbCa(2/3) AAS
↓みたいに、相互参照するstaticなデータを初期化するときはどうするのよ?
こういうのは、CとC++で互換性あるコードは書けんのかね?
#include <stdio.h>
struct A {
char *s;
struct A *p;
};
static struct A a[];
static struct A b[] = {{"1st in b[]", a}, {"2nd in b[]", a+1}};
static struct A a[] = {{"1st in a[]", b}, {"2nd in a[]", b+1}};
省5
76: (ワッチョイ 36a3-D6lx) 2017/04/08(土)18:22 ID:lscI+aDp0(1) AAS
前方宣言の方のstaticを削りゃいいんじゃね?
77(1): 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd92-+G+c) 2017/04/08(土)18:29 ID:QtLPEhOXd(1) AAS
static変数を別の翻訳単位から参照するのはおかしいんじゃね? 俺だったらexternにするぞ。
78: (ワッチョイ 72cc-n0J+) 2017/04/08(土)20:50 ID:N0c155CY0(1) AAS
K&RならC勉強していた女子社員にやったわ
姉貴が蛍光ペンで目茶苦茶にしてくれたからもう要らなかったんけどねw
79: ◆QZaw55cn4c (ワッチョイ beff-rt0y) 2017/04/08(土)21:28 ID:gcfXcmks0(1/2) AAS
>>71
lib や *.o を単独で配布して,そのヘッダを書くとき(lib/o の中に静的変数がある)ときは,extern はないと困るだろうな,とは思う
extern 不要論を連呼するキチガイがいるらしいから,注意したほうがいい
80(1): (ワッチョイ be14-4Usw) 2017/04/08(土)21:34 ID:ATd5Gv2i0(1) AAS
でも実際extern からアクセスしろってライブラリは見たこと無い
普通関数じゃね?
81: (ワッチョイ 72cd-8Vmj) 2017/04/08(土)21:38 ID:J+fRzcYw0(1) AAS
クソライブラリを使うときにexternないと困るな
82: ◆QZaw55cn4c (ワッチョイ beff-rt0y) 2017/04/08(土)21:39 ID:gcfXcmks0(2/2) AAS
>>80
例えば <cstdio> の FILE *stdout とか
外部のライブラリの中の静的変数へのプロトタイプとして
FILE *stdout;
て書くと多分そのモジュールに stdout が確保されてしまうんじゃないかな?
関数は
int f();
だけで実体がないのだったらプロトタイプだとわかるけれども
変数は実体を伴うのか参照なのかを区別できない気がする
関数だけ提供するライブラリが存在するのは理解できる
83(1): (ワッチョイ 138f-+TA9) 2017/04/08(土)21:56 ID:LBU0hU+r0(2/2) AAS
>>75
つ__cplusplus
84(1): (オッペケ Sr57-GJ90) 2017/04/08(土)23:26 ID:TFmwEDa6r(2/2) AAS
externの必要性をとうとう理解してしまったQ
それに対し相変わらずコミュ障のもう一人のクソコテ
85(2): (アウアウイー Sa97-lIlP) 2017/04/08(土)23:36 ID:8P1QJwbCa(3/3) AAS
>>83
#ifdef __cplusplus
#define _static
#define _extstatic extern
namespace {
#else
#define _static static
#define _extstatic static
#endif
_extstatic struct A a[];
省7
86: (ワッチョイ 7f8c-7E04) 2017/04/08(土)23:39 ID:bfo0YVHI0(1) AAS
>>85
わざわざc使わなくてもc++だけでよかでしょ?
87: (ワッチョイ cf7a-02AM) 2017/04/09(日)00:00 ID:cP8aqgv30(1) AAS
Cでも使いたい人には自分でラッパー作ってくれと言ってるわ
88: (オッペケ Sr57-GJ90) 2017/04/09(日)00:52 ID:djBIOydUr(1/9) AAS
>>85
>こんだけ書けばCでもC++でも無警告でコンパイル通ったけど
そんな文法違反な糞コードを「ボクのパソコンでは動いたもん」みたいに自慢されても…
89: (オッペケ Sr57-GJ90) 2017/04/09(日)01:02 ID:djBIOydUr(2/9) AAS
>>77
ひょっとして、もしかするとお前の頭では
「extern」=「外部リンケージ」なのか?
90: 片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd92-+G+c) 2017/04/09(日)07:01 ID:qFsmFYyfd(1/3) AAS
わっしょい、わっしょい
91: 片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd92-+G+c) 2017/04/09(日)07:08 ID:qFsmFYyfd(2/3) AAS
自分の理解できないことを、何でもコミュ症で片付けるやつ、嫌い。
92: 片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd92-+G+c) 2017/04/09(日)07:13 ID:qFsmFYyfd(3/3) AAS
言語障害って日本語があるのに、何で意味不明な略したりするのかな。臆病者だから?
93(1): ◆QZaw55cn4c (ワッチョイ beff-rt0y) 2017/04/09(日)07:31 ID:ArlDNXBP0(1) AAS
>>84
ところが C には仮定義というものがあって,仮定義しておけば静的変数を共有できるんだよ
だから extern は要らない子!と主張できるんだ
ここは C++ だから,仮定義が出来ない前提で話しているだけだよ
君はまだまだ浅いね
94(1): (オッペケ Sr57-GJ90) 2017/04/09(日)08:37 ID:djBIOydUr(3/9) AAS
>>93
ん?extern要らない説の根拠は(翻訳単位に閉じた)仮定義じゃなくて
リンカが頑張ることだったと記憶していたのだが
ひょっとしてもしかすると、アフォ?
95: (ワッチョイ 130e-+TA9) 2017/04/09(日)09:10 ID:A2LIIX7y0(1/2) AAS
仮定義はリンカが頑張って実現してるんだが
リンカのマップ情報とか見たことないの?
96: (オッペケ Sr57-GJ90) 2017/04/09(日)09:37 ID:djBIOydUr(4/9) AAS
なるほど
仮定義というものが何なのか理解していないのでこういうとんちんかんな発言になるのだな
97: (ワッチョイ 130e-+TA9) 2017/04/09(日)10:11 ID:A2LIIX7y0(2/2) AAS
それはこっちの台詞だyo
98(2): (ワッチョイ cf59-dxaC) 2017/04/09(日)10:30 ID:elB46Etj0(1/6) AAS
仮定義ってなんだっけ
extern int a; が複数の翻訳単位にあったら勝手にaの実体が1個できるというやつだっけ;
C++には無いの?(驚愕
99(2): ◆QZaw55cn4c (ワッチョイ bf35-D1KF) 2017/04/09(日)10:53 ID:Cfl4+wb20(1/3) AAS
>>98
仮定義はリンカにおんぶにだっこしてもらう仕様だよ
extern を書かなくてもいい、というものだ
実体を持たない普通の外部変数と同じように
int evil_global;
とか書くだけでいい、ヘッダに extern int evil_global; と書く必要がなくなる(宣言部分での初期化はできないことに注意)
いやまあ、ちょっと追いきれていないところがあって、まだ俺も浅いのはみとめるが、とりあえず C++ にはないので、みなかったことにしている
議論が続きそうだが俺は参加しないよ
100(1): ◆QZaw55cn4c (ワッチョイ bf35-D1KF) 2017/04/09(日)10:53 ID:Cfl4+wb20(2/3) AAS
>>94
仮定義は翻訳単位に閉じたとはいいきれないよ
上下前次1-新書関写板覧索設栞歴
あと 902 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.451s*