C++相談室 part130 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/03/31(金) 08:47:49.65ID:UkLjKqcm0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part129
http://echo.2ch.net/test/read.cgi/tech/1483940967/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1478440682/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2017/04/06(木) 07:49:27.05ID:XYhavOUb0
x?1:0
2017/04/06(木) 08:13:07.80ID:WJuxfIBi0
N4660の
7.6p6
8.3.1p9
8.10p1
あたりを読んでから質問するという発送は無いものか
43デフォルトの名無しさん (ワッチョイ 7f93-+TA9)
垢版 |
2017/04/06(木) 08:18:19.01ID:3pIc1pJU0
>>40
std::cout << typeid(!0).name();
こんくらいやってみた?
2017/04/06(木) 08:36:31.85ID:8pWbCGLcr
一般人はtypeidを知らない可能性があるが
auto x = (0 == 0);
と書いてxの上にマウスカーソルを持って行く知能は欲しいところ
45デフォルトの名無しさん (ワッチョイ 7f93-+TA9)
垢版 |
2017/04/06(木) 08:49:41.77ID:3pIc1pJU0
一般人てコンパイラって何?な人?
2017/04/06(木) 10:25:11.03ID:zY+rYc0kr
企業に勤めていて日常的にC++言語を使うような人、かな
47デフォルトの名無しさん (ワッチョイ 7f93-+TA9)
垢版 |
2017/04/06(木) 11:12:46.55ID:3pIc1pJU0
日常的にC++使っててtypeid知らないなんて死刑だろ
2017/04/06(木) 11:30:17.09ID:b6mS5n8zd
知っていても使わないなあ
試しに実験したことはあるかも
2017/04/06(木) 11:30:45.11ID:b6mS5n8zd
C++たまにしか使いません
2017/04/06(木) 18:35:51.13ID:H/56SjdK0
少し前からDXライブラリの勉強を始めました

「ポンクソフト」というサイトさんの「C/C++言語とDXライブラリでゲーム作成入門」というページを真似ながら勉強しています
そこの「6.オセロの作成」に先程着手したんですが、何度見返しても以下のエラーが出て実行できません

一つ目:コードC3872「'0x200e':この文字を識別子で使用することはできません」行67
二つ目:コードC3872「'0x200e':この文字を識別子で使用することはできません」行80

解決方を求めて「C3872」「0x200e」などと検索したんですが、解決方を見つけることは叶いませんでした
どなたか私に原因と解決方を教えて下さい
2017/04/06(木) 18:43:30.36ID:0SmLVS9od
>>50
全角文字と半角文字の違いに気を付けて。コンピュータは全角と半角を区別する。
2017/04/06(木) 18:43:47.28ID:oAa8xYYx0
そこのURLを貼ってくれると話はさらに早くなる
2017/04/06(木) 18:53:48.85ID:H/56SjdK0
>>51
エラーの出た行を3回ほど確認しましたが全角文字は見当たりませんでした

>>52
「ttp://ponk.jp/cpp/dxlib/othello」です
2017/04/06(木) 19:06:55.02ID:zY+rYc0kr
そりゃpriorityの後に変な文字が入ってるからな
U+200EはC++で使っていい文字に入っていない
2017/04/06(木) 19:17:42.97ID:NIAe6HmI0
確かに67行目と80行目の"priority"の右に見えない文字 (LRM) が入ってるね
なんでこんなもんが紛れてるのか謎だけどそれを消せばコンパイル通るんじゃない
2017/04/06(木) 19:19:47.39ID:H/56SjdK0
>>54
今まで見るだけの確認作業してましたがpriorityの直後でdeleteキー押したら確かに謎の文字が消えました!

>>51-52>>54
質問に答えていただきありがとうございました
2017/04/06(木) 19:23:16.61ID:H/56SjdK0
>>55
消したらコンパイル通りました

今までは「サイトのコピペ」→「解説読んで納得」→「各文に自分が分かるようにコメント付け」という方法で勉強してたので、
これを機にコピペはやめて全て自分で打ち込むことにします

ありがとうございました
2017/04/06(木) 20:18:57.75ID:yrLcUnI00
>>42
普通その数字が何を意味するのかすらわからねえよ
2017/04/06(木) 21:09:55.73ID:i8ka60Xp0
>>42
なんで贈り物送らないといけないのか
2017/04/07(金) 00:12:27.63ID:GKfKrOhh0
>>57
コピペ後に理解というやり方から
理解した上で打ち込むって考え方がいいと思うよ

実務でも似たような処理をコピペした時に
別の変数参照するように変える必要があったのに
1ヶ所変え忘れて問題になった何て言う事例もありがち
2017/04/07(金) 00:44:12.95ID:T22AFNFv0
勉強中は兎も角、実務でコピペコーディングしてバグ仕込むとか入念に拷問した後死刑でも仕方ないレベルだからな
2017/04/07(金) 01:17:29.90ID:hMKnjdw+0
そんなにコピペすることってあるか?
63デフォルトの名無しさん (ワッチョイ 0775-yu7M)
垢版 |
2017/04/07(金) 02:53:31.90ID:k32kujyO0
ないアルよ
64デフォルトの名無しさん (ワッチョイ fb79-xvm/)
垢版 |
2017/04/07(金) 03:15:46.83ID:2Lzx/lCN0
まあ、スニペットなんて言い方してても実態はコピペだからな。
2017/04/07(金) 12:08:05.92ID:9gQAwyyc0
プログラミングなんて同じことの繰り返しなんだから、コピペで済ませたほうがいいよ
66デフォルトの名無しさん (スップ Sdb2-C2yt)
垢版 |
2017/04/07(金) 12:42:46.10ID:ykM1heJrd
コード書いてていうほどコピペしなくね
67デフォルトの名無しさん (ワッチョイ 138f-+TA9)
垢版 |
2017/04/07(金) 14:14:16.56ID:FkJcTuLk0
コピペしなきゃいけない自分が情けなくなるね
同じことを二度は言わないスマートさが足りないんだって
68デフォルトの名無しさん (JP 0H2e-TKAZ)
垢版 |
2017/04/07(金) 15:08:17.29ID:4pSi19lZH
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のサイズがわからん、とエラーになるんですが、
c++だとどう書けばいいんですか?
69デフォルトの名無しさん (ワッチョイ 138f-+TA9)
垢版 |
2017/04/07(金) 17:44:51.15ID:FkJcTuLk0
namespace
{
extern int a[]; // prototype
int a[] = {1,2,3,4};
}

int getitem(int n) {
return a[n];
}
2017/04/08(土) 12:17:44.66ID:TFmwEDa6r
extern int a[]; はprototypeじゃないけどな
2017/04/08(土) 13:44:56.17ID:L4KgTOQ90
未だにexternの役割がよくわかんね;
付けなくても宣言できて勝手に外部リンケージになるし…
K&R本はどっか行った;
72デフォルトの名無しさん (ワッチョイ 138f-+TA9)
垢版 |
2017/04/08(土) 16:54:00.75ID:LBU0hU+r0
実体を定義するのかしないのか曖昧なところをはっきりさせたり
デフォで内部結合なものを強制的に外部結合させたり

無名namespaceは逆で強制的に外部結合なものに妨害工作する
2017/04/08(土) 17:25:09.91ID:8P1QJwbCa
>>69の方がC++としてモダンなのはわかるが、>>68がC++だけエラーになる理由がわからん。
gcc以外のコンパイラでもだめなんだろうか?
74デフォルトの名無しさん (ワッチョイ fb56-Hufg)
垢版 |
2017/04/08(土) 17:34:57.89ID:8rt7+cSn0
//static int a[]; // prototype
static int a[] = {1,2,3,4};

これでOK
2017/04/08(土) 17:54:16.17ID:8P1QJwbCa
↓みたいに、相互参照する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}};

int main(){
printf("%s, %s\n", a[0].s, a[0].p->s);
printf("%s, %s\n", b[1].s, b[1].p->s);
return 0;
}
2017/04/08(土) 18:22:48.95ID:lscI+aDp0
前方宣言の方のstaticを削りゃいいんじゃね?
2017/04/08(土) 18:29:35.52ID:QtLPEhOXd
static変数を別の翻訳単位から参照するのはおかしいんじゃね? 俺だったらexternにするぞ。
2017/04/08(土) 20:50:02.31ID:N0c155CY0
K&RならC勉強していた女子社員にやったわ
姉貴が蛍光ペンで目茶苦茶にしてくれたからもう要らなかったんけどねw
2017/04/08(土) 21:28:14.31ID:gcfXcmks0
>>71
lib や *.o を単独で配布して,そのヘッダを書くとき(lib/o の中に静的変数がある)ときは,extern はないと困るだろうな,とは思う
extern 不要論を連呼するキチガイがいるらしいから,注意したほうがいい
2017/04/08(土) 21:34:09.29ID:ATd5Gv2i0
でも実際extern からアクセスしろってライブラリは見たこと無い
普通関数じゃね?
81デフォルトの名無しさん (ワッチョイ 72cd-8Vmj)
垢版 |
2017/04/08(土) 21:38:17.52ID:J+fRzcYw0
クソライブラリを使うときにexternないと困るな
2017/04/08(土) 21:39:43.39ID:gcfXcmks0
>>80
例えば <cstdio> の FILE *stdout とか

外部のライブラリの中の静的変数へのプロトタイプとして
FILE *stdout;
て書くと多分そのモジュールに stdout が確保されてしまうんじゃないかな?
関数は
int f();
だけで実体がないのだったらプロトタイプだとわかるけれども
変数は実体を伴うのか参照なのかを区別できない気がする

関数だけ提供するライブラリが存在するのは理解できる
83デフォルトの名無しさん (ワッチョイ 138f-+TA9)
垢版 |
2017/04/08(土) 21:56:34.32ID:LBU0hU+r0
>>75
つ__cplusplus
2017/04/08(土) 23:26:49.13ID:TFmwEDa6r
externの必要性をとうとう理解してしまったQ
それに対し相変わらずコミュ障のもう一人のクソコテ
2017/04/08(土) 23:36:29.56ID:8P1QJwbCa
>>83
#ifdef __cplusplus
#define _static
#define _extstatic extern
namespace {
#else
#define _static static
#define _extstatic static
#endif

_extstatic 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}};

#ifdef __cplusplus
}
#endif

まぁ、確かにこんだけ書けばCでもC++でも無警告でコンパイル通ったけど、
まぁ面倒ですこと(゚д゚)!
2017/04/08(土) 23:39:18.99ID:bfo0YVHI0
>>85
わざわざc使わなくてもc++だけでよかでしょ?
2017/04/09(日) 00:00:11.10ID:cP8aqgv30
Cでも使いたい人には自分でラッパー作ってくれと言ってるわ
2017/04/09(日) 00:52:09.49ID:djBIOydUr
>>85
>こんだけ書けばCでもC++でも無警告でコンパイル通ったけど
そんな文法違反な糞コードを「ボクのパソコンでは動いたもん」みたいに自慢されても…
2017/04/09(日) 01:02:23.00ID:djBIOydUr
>>77
ひょっとして、もしかするとお前の頭では
「extern」=「外部リンケージ」なのか?
2017/04/09(日) 07:01:35.78ID:qFsmFYyfd
わっしょい、わっしょい
2017/04/09(日) 07:08:55.81ID:qFsmFYyfd
自分の理解できないことを、何でもコミュ症で片付けるやつ、嫌い。
2017/04/09(日) 07:13:22.07ID:qFsmFYyfd
言語障害って日本語があるのに、何で意味不明な略したりするのかな。臆病者だから?
2017/04/09(日) 07:31:21.97ID:ArlDNXBP0
>>84
ところが C には仮定義というものがあって,仮定義しておけば静的変数を共有できるんだよ
だから extern は要らない子!と主張できるんだ
ここは C++ だから,仮定義が出来ない前提で話しているだけだよ

君はまだまだ浅いね
2017/04/09(日) 08:37:34.70ID:djBIOydUr
>>93
ん?extern要らない説の根拠は(翻訳単位に閉じた)仮定義じゃなくて
リンカが頑張ることだったと記憶していたのだが
ひょっとしてもしかすると、アフォ?
95デフォルトの名無しさん (ワッチョイ 130e-+TA9)
垢版 |
2017/04/09(日) 09:10:41.09ID:A2LIIX7y0
仮定義はリンカが頑張って実現してるんだが
リンカのマップ情報とか見たことないの?
2017/04/09(日) 09:37:03.20ID:djBIOydUr
なるほど
仮定義というものが何なのか理解していないのでこういうとんちんかんな発言になるのだな
97デフォルトの名無しさん (ワッチョイ 130e-+TA9)
垢版 |
2017/04/09(日) 10:11:41.88ID:A2LIIX7y0
それはこっちの台詞だyo
2017/04/09(日) 10:30:05.69ID:elB46Etj0
仮定義ってなんだっけ
extern int a; が複数の翻訳単位にあったら勝手にaの実体が1個できるというやつだっけ;
C++には無いの?(驚愕
2017/04/09(日) 10:53:03.36ID:Cfl4+wb20
>>98
仮定義はリンカにおんぶにだっこしてもらう仕様だよ
extern を書かなくてもいい、というものだ
実体を持たない普通の外部変数と同じように
int evil_global;
とか書くだけでいい、ヘッダに extern int evil_global; と書く必要がなくなる(宣言部分での初期化はできないことに注意)

いやまあ、ちょっと追いきれていないところがあって、まだ俺も浅いのはみとめるが、とりあえず C++ にはないので、みなかったことにしている
議論が続きそうだが俺は参加しないよ
2017/04/09(日) 10:53:48.84ID:Cfl4+wb20
>>94
仮定義は翻訳単位に閉じたとはいいきれないよ
2017/04/09(日) 11:04:16.30ID:Cfl4+wb20
>>99
訂正するね
誤:実体を持たない普通の外部変数と同じように
正:実体を持たない外部変数であっても
なんか訂正しきれていないきもするが
2017/04/09(日) 17:20:17.02ID:djBIOydUr
>>98
>複数の翻訳単位にあったら勝手にaの実体が1個
それはQの妄想というやつで仮定義とは別
なおISO/ IEC 9899:2011では未定義動作になっているので仮に実体が一個になっても違反ではない
2017/04/09(日) 19:24:59.42ID:elB46Etj0
「仮定義」でググッたらあったわ;
ttp://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/devwin32/tentativedefinitions_xml.html

extern、static、初期化のいずれも無しの変数宣言っぽいものが(関数外のスコープで)複数個現れたとき、
C言語規格の方が高度なことをしてくれるのか
(C++では>>102によると未定義動作とのことなので同じ結果になるかどうかは規格外の仕様に拠る。

しかし上の説明だけでは関数宣言にexternを付ける意味がまだわかんね;
104デフォルトの名無しさん (ワッチョイ f6bc-+TA9)
垢版 |
2017/04/09(日) 19:56:25.40ID:9WDYOgp70
>>102
もはや何を言っているのかしどろもどろだな
未定義の動作は何が起きても構わないが、
その内容に依存するコードが違反かどうかもわからないクルクルパーはお気の毒
2017/04/09(日) 20:10:15.00ID:elB46Etj0
いやすまん「規格外の仕様に拠る」はやや誤解して書いてたわ;
下記の通り、未定義動作を含むコードは合法には成り得ず、実行できるかもしれないが、結果は保証されない。(つまり違反
ttp://www.c-lang.org/detail/undefined_behavior.html
>未定義の動作に対して,その状況を無視して予測不可能な結果を返してもよい。
>翻訳時又はプログラム実行時に,文書化された,環境に特有な方法で処理してもよい(診断メッセージの発行を伴っても伴わなくてもよい。)。
>さらに(診断メッセージを出力し)翻訳又は実行を中断してもよい。

ここで、診断メッセージ云々とか「文書化された,環境に特有な方法で処理」とは安全に実行を止めることを意味する
Windowsでアプリのクラッシュ時に出てくるダイアログとか、コアダンプとかがそれにあたる
2017/04/09(日) 20:15:29.79ID:elB46Etj0
ていうか最初の疑問に戻るんですが、総合すると、CでもC++でも「extern」 = 「外部リンケージ」、でおkなのでは…
ただ外部リンケージの意味で省略可能だったり、
ANSI Cにおいては「仮定義」に関する仕様が追加されてるから話が複雑化したように見えているだけで、
2017/04/09(日) 20:16:15.29ID:djBIOydUr
>下記の通り、未定義動作を含むコードは合法には成り得ず

何というか、「下記」のどこを縦読みするとそうなるんだか
108デフォルトの名無しさん (ワッチョイ f6bc-+TA9)
垢版 |
2017/04/09(日) 20:18:42.95ID:9WDYOgp70
>>106
追加じゃなく追認な
2017/04/09(日) 20:19:44.66ID:elB46Etj0
>>107
>翻訳時又はプログラム実行時に,文書化された,環境に特有な方法で処理してもよい
つまり翻訳時にビルドエラーで止めても良い
2017/04/09(日) 20:34:41.52ID:elB46Etj0
>>108
互いに正しく適合する「宣言」と「定義」からなるプログラムにとって「仮定義」の概念は不要なのだから、
この場合何を追認したかというと既存のソースコードにおける「extern」の誤用を追認したとしか考えられないのでは…

つまり言語規格の既存の条項が「追認」されたわけではなく、あくまで条項が「追加」されたんである
(多分「追認」なんて定義もされていないだろうし、
2017/04/09(日) 20:52:23.27ID:k8qrPdcw0
>>106
> 総合すると、CでもC++でも「extern」 = 「外部リンケージ」、でおkなのでは…
ちょっと端折り過ぎかな
n3797(C++14) 7.1.1 Storage class specifiers Example:

static int b; // b has internal linkage
extern int b; // b still has internal linkage
112デフォルトの名無しさん (ワッチョイ f6bc-+TA9)
垢版 |
2017/04/09(日) 21:03:07.96ID:9WDYOgp70
>>110
少なくとも「externの誤用」ではない
externと書かなかった場合のことについてだ
113デフォルトの名無しさん (ワッチョイ f6bc-+TA9)
垢版 |
2017/04/09(日) 21:04:18.72ID:9WDYOgp70
今となっては忸怩たる思いだが
俺は「追認された」張本人の1人であって
2017/04/09(日) 21:32:38.73ID:djBIOydUr
>>109
なるほど理解した
まさか>>102から>>105にかけて『違反』という言葉の意味ををすり替えられていたとは気付かなかった失礼
2017/04/09(日) 21:52:43.91ID:djBIOydUr
>>110
>「仮定義」の概念は不要なのだから

仮定義が無いと通らない例が>>75で出ているのに
不要である理由の説明も無しにいきなり結論付けられても…
2017/04/09(日) 22:01:05.39ID:djBIOydUr
>103
そのサイトのANSI Cの説明は多分ウソだぞ
同じ内容なはずのISO Cはそんな定義じゃないから
117デフォルトの名無しさん (ワッチョイ 138f-+TA9)
垢版 |
2017/04/10(月) 14:43:46.26ID:DheowmrF0
おまえら規格票くらい買うか、せめてドラフトくらい用意しろや
External object definitions
Semantics
If the declaration of an identifier for an object has file scope and an initializer,
the declaration is an external definition for the identifier.
A declaration of an identifier for an object that has file scope without an initializer,
and without a storage-class specifier or with the storage-class specifier static,
constitutes a tentative definition. If a translation unit contains one or
more tentative definitions for an identifier, and the translation unit contains
no external definition for that identifier, then the behavior is exactly as
if the translation unit contains a file scope declaration of that identifier,
with the composite type as of the end of the translation unit, with an initializer equal to 0.
If the declaration of an identifier for an object is a tentative definition and
has internal linkage, the declared type shall not be an incomplete type.

今どき「ANSI C」とか言っちゃってるサイトは眉に唾してかかれ
118デフォルトの名無しさん (ワッチョイ 138f-+TA9)
垢版 |
2017/04/10(月) 14:44:01.60ID:DheowmrF0
 EXAMPLE 1
  int i1 = 1; // definition, external linkage
  static int i2 = 2; // definition, internal linkage extern
  int i3 = 3; // definition, external linkage
  int i4; // tentative definition, external linkage
  static int i5; // tentative definition, internal linkage
  int i1; // valid tentative definition, refers to previous
  int i2; // 6.2.2 renders undefined, linkage disagreement
  int i3; // valid tentative definition, refers to previous
  int i4; // valid tentative definition, refers to previous
  int i5; // 6.2.2 renders undefined, linkage disagreement
  extern int i1; // refers to pre vious, whose linkage is external
  extern int i2; // refers to pre vious, whose linkage is internal
  extern int i3; // refers to pre vious, whose linkage is external
  extern int i4; // refers to pre vious, whose linkage is external
  extern int i5; // refers to pre vious, whose linkage is internal

 EXAMPLE 2
 If at the end of the translation unit containing
  int i[];
 the array i still has incomplete type, the implicit initializer causes it to have one element,
which is set to zero on program startup.
119デフォルトの名無しさん (ワッチョイ 138f-+TA9)
垢版 |
2017/04/10(月) 14:44:21.17ID:DheowmrF0
6.9.2 外部オブジェクト定義
意味規則 オブジェクトの識別子の宣言がファイル有効範囲及び初期化子をもつ場合,その宣言を識別子の外部定義という。
ファイル有効範囲のオブジェクトの識別子を,初期化子を使わず,かつ,記憶域クラス指定子なしか又は記憶域クラス指定子static で宣言する場合,そのオブジェクトの識別子の宣言を仮定義(tentativedefinition)という。
翻訳単位が,ある識別子に対する仮定義を一つ以上含み,かつその識別子に対する外部定義を含まない場合,その翻訳単位に,翻訳単位の終わりの時点での合成型,及び0 に等しい初期化子をもったその識別子のファイル有効範囲の宣言がある場合と同じ規則で動作する。
オブジェクトに対する識別子の宣言が仮定義であり,内部結合をもつ場合,その宣言の型は不完全型であってはならない。
120デフォルトの名無しさん (ワッチョイ 138f-+TA9)
垢版 |
2017/04/10(月) 14:45:14.16ID:DheowmrF0
 例1.
  int i1 = 1; // 定義,外部結合
  static int i2 = 2; // 定義,内部結合
  extern int i3 = 3; // 定義,外部結合
  int i4; // 仮定義,外部結合
  static int i5; // 仮定義,内部結合
  int i1; // 正しい仮定義,前の定義を参照する
  int i2; // 前に内部結合をもつ定義があるため,結合の不一致が生じ,6.2.2 によって動作は未定義となる
  int i3; // 正しい仮定義,前の定義を参照する
  int i4; // 正しい仮定義,前の定義を参照する
  int i5; // 前に内部結合をもつ定義があるため,結合の不一致が生じ,6.2.2 によって動作は未定義となる
  extern int i1; // 外部結合をもつ前の定義を参照する
  extern int i2; // 内部結合をもつ前の定義を参照する
  extern int i3; // 外部結合をもつ前の定義を参照する
  extern int i4; // 外部結合をもつ前の定義を参照する
  extern int i5; // 内部結合をもつ前の定義を参照する

 例2. 翻訳単位が
  int i[];
 を含み,その翻訳単位の最後で,配列i が依然として不完全型をもつ場合,配列i は暗黙の初期化子によって一つの要素をもつようにされる。その要素にはプログラム開始時に0 がセットされる。
2017/04/10(月) 18:45:17.26ID:srG0I8DXr
N1570のリンクを貼ったら、真実を知った>>100が傷ついちゃうかも知れないと思って遠慮してた
2017/04/10(月) 23:59:41.82ID:srG0I8DXr
とりあえずC++のリンケージ仕様でも投下しとくか
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2017/
ここのN4660(C++17 DIS)の6.5節の段落3〜4あたりだな
123デフォルトの名無しさん (ワッチョイ 138f-+TA9)
垢版 |
2017/04/11(火) 15:06:41.62ID:xAQ0kPvC0
パスいるやん
2017/04/11(火) 17:53:37.33ID:gmpvjUS3r
まじか
じゃあ同じ内容のN4659で
2017/04/12(水) 19:45:40.04ID:r8mKYRyu0
>>122
いや,だからC++の話だったら仮定義はない,って >>99 で書いたつもりだが,
C++ のリンクを貼ってなにを言おうとしているの?
2017/04/12(水) 22:52:37.49ID:hzellBg9r
>>125
Cの仕様が示されたのだから次はC++での仕様が示されないと>106が可哀想ではないか
スレ違いの仮定義ではなくexternの意味・リンケージとの関係が本題だったと記憶
127デフォルトの名無しさん (ワッチョイ db57-EaKP)
垢版 |
2017/04/13(木) 12:41:59.49ID:NIQ3hjXd0
んだね
128デフォルトの名無しさん (ワッチョイ eb00-AM0K)
垢版 |
2017/04/13(木) 17:14:46.56ID:IqLxmvNO0
moduleが標準入りするのはいつごろよ?ついでにD言語のversionとaliasもパクって完全体になってほしいね
2017/04/13(木) 18:41:48.04ID:RdwWAERL0
それよりネットワーク関連を標準化しろ
この際asioでも許容
2017/04/13(木) 21:28:48.50ID:n9EAyVre0
asioとhttp系の何かつけてくれ
2017/04/15(土) 11:47:11.44ID:BNJEkz/Q0
>>129-130
ネットワークライブラリを作っております
遊んでみてください、宣伝失礼しました。
https://github.com/Ichishino/subevent
2017/04/15(土) 11:52:21.06ID:0ry10bQQp
標準で入ってることが重要なんじゃないかなあ…
2017/04/15(土) 11:56:11.76ID:JwQS3cI30
炊飯器用の小さいネットワークライブラリも必要になるんじゃねえの
2017/04/15(土) 12:21:35.22ID:QXvRHshA0
漁師さん用も頼む
2017/04/15(土) 14:16:17.69ID:/RNhb41k0
外部ライブラリっていうだけでハードル高くなるからな
仕事で使いづらいのはもちろんとしてOSSでも使用者に各ライブラリを掻き集めてもらわないといけなくなるから最小限にしたい
136デフォルトの名無しさん (ワッチョイ 1fb2-EaKP)
垢版 |
2017/04/15(土) 21:37:48.57ID:53BEnEdf0
論理積で空集合になったからといって
じゃあ論理和にしろと? 頭悪すぎだろ
2017/04/15(土) 22:25:04.54ID:D67U9VSC0
静的型付け言語でオブジェクト指向すると
基底クラスにメソッドが集まっていく…
2017/04/15(土) 22:33:53.11ID:uwyLFIA10
それはよくない兆候だよね
2017/04/15(土) 23:01:12.27ID:/RNhb41k0
何故テンプレートを使わないのか
2017/04/16(日) 01:51:56.03ID:M1nx5OGg0
基底クラスにメソッドが集まっていくのは仕方が無いにしても、
公開する相手別にインターフェースを分けて抽象クラスの多重継承でもしておけば
大きな混乱は避けられる
希ガス
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況