[過去ログ] C++相談室 part165 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
610
(1): (JP 0Hf2-Dj8N) 2024/12/01(日)18:28 ID:IuCKzQHfH(1/6) AAS
xxx.h で namespace A { size_t intval, count, itr; } を宣言。もちろん、インクルードガードしてる。

ところが、作ったライブラリをテンプレート対応に修正したら、「intval, count, itr」が2重定義されてます。」
という旨のLINK1169のエラー(Visual Stuio 2022)が突然出てきた。前のライブラリではこんなエラー出てなかった
のに...ナンデダロー、ナンデダロー♪と悩んでいたが、

namespace A { extern size_t intval, count, itr; }

を宣言したら解決した。extern_や外部リンケージのことがが良くわからない。調べたら通りいっぺんのことは
わかるけど。LINK1169のエラーが出たら、extern宣言してみてLINK1169を殺す、という対症療法だけ学習しました。
611: (JP 0Hf2-Dj8N) 2024/12/01(日)18:28 ID:IuCKzQHfH(2/6) AAS
くそ!また改行がめちゃくちゃ
612: (ワッチョイ 0e62-jXfH) 2024/12/01(日)18:31 ID:NWNsoufr0(1) AAS
MAPファイルの読み方を研究した方が良いかもな
613: (JP 0Hf2-Dj8N) 2024/12/01(日)18:32 ID:IuCKzQHfH(3/6) AAS
それに誤字だらけだし。オワタ。高齢者の認知症検査試験大丈夫かな。5年後だけど。
614: はちみつ餃子◆8X2XSCHEME (ワッチョイ bd32-mEgI) 2024/12/01(日)19:20 ID:rI1+OlKH0(1/2) AAS
>>610
定義はプログラム全体でひとつとする原則 (one definition rule) は診断不要な場合がある仕様になっていて処理系が問題を検出できなくてもかまわないことを意味する。
つまりエラーが出てなくても間違っている (未定義の挙動) かもしれないので理解せずにエラーメッセージに頼るのは悪い姿勢。
615
(2): (JP 0Hf2-Dj8N) 2024/12/01(日)19:34 ID:IuCKzQHfH(4/6) AAS
テンプレートにすると(implテクニックを使わなければ)、定義も実装も同じファイルに書かなければならないからそれが原因かなあ。とりあえず、厄介なLINKエラーは除霊されました。
616
(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ bd32-mEgI) 2024/12/01(日)20:25 ID:rI1+OlKH0(2/2) AAS
>>615
テンプレート内でグローバル変数にアクセスする箇所があるってこと?
それなら今はインライン変数を使うのが便利で行儀の良い作法のひとつだと考えられている。
インライン変数は C++17 からの機能なのでそれより古い規格しか使えないような事情があるなら仕方ないんだけど……
617: (JP 0Hf2-Dj8N) 2024/12/01(日)20:32 ID:IuCKzQHfH(5/6) AAS
>>616

ありがとうございます。調べてみます。
ちなみに、>>615 定義も実装も → 宣言も定義も ええいくそっ! まーた間違えた
618: (JP 0Hf2-Dj8N) 2024/12/01(日)21:38 ID:IuCKzQHfH(6/6) AAS
>>616

まーた、言い忘れました。まさにその状況でした。
619
(3): (JP 0Hf2-Dj8N) 2024/12/02(月)22:09 ID:/dQ47H+wH(1/2) AAS
[][]演算子のオーバーロードが欲しい。行列を1次元配列で実装する場合、C++は行主順(行列を行ベクトルの集まりとみなす)。Blas、lapackのライブラリをビルドしたfortran77は列主順(行列を列ベクトルの集まりとみなす)。()演算子のオーバーロードでは、行主順だろうが列主順だろうが、行列Aのi行j列の要素にはA(i,j)とアクセスできるが、列主順の場合には[]演算子のオーバーロードをどうやってもA[j][i]となってしまう。それでeigenは()演算子のみをサポートしている(本当か?)。だが、A(i,j)が添字0から始まるのが気に入らん。添字が0から始まるのはA[i][j]やろうもん。
[][]のオーバーロードがあったらなあ。
620: (ワッチョイ 00f0-X9QH) 2024/12/02(月)22:22 ID:7rlMEi700(1) AAS
propertyなら簡単に多次元配列扱えそうなのに
propertyいつになったら実装されるのやら
621: (ワッチョイ b701-5W+W) 2024/12/02(月)22:30 ID:6C6t/Sm50(1/2) AAS
>>619
O [][]演算子のオーバーロードが欲しい。
O 行列を1次元配列で実装する場合、C++は行主順(行列を行ベクトルの集まりとみなす)。
O Blas、lapackのライブラリをビルドしたfortran77は列主順(行列を列ベクトルの集まりとみなす)。
X ()演算子のオーバーロードでは、行主順だろうが列主順だろうが、行列Aのi行j列の要素にはA(i,j)とアクセスできるが、
X 列主順の場合には[]演算子のオーバーロードをどうやってもA[j][i]となってしまう。
O それでeigenは()演算子のみをサポートしている(本当か?)。
省4
622
(1): (JP 0Hf2-Dj8N) 2024/12/02(月)22:40 ID:/dQ47H+wH(2/2) AAS
ああ、そう。
ところで、A(i,j)が添字0から始まるのが気にならないんだ。じゃあ、もうええわ。
623: (ワッチョイ 0e62-jXfH) 2024/12/02(月)22:51 ID:Fo02P0Bv0(1) AAS
msvc4.xxにoprater delete[]をoverideする機能が無い
所からCOMの仕様が策定されている所を考えると
面白いな
624: (ワッチョイ b701-5W+W) 2024/12/02(月)22:58 ID:6C6t/Sm50(2/2) AAS
>>622
日本語の意味が分からんと書いている
0オフセットが嫌ならiやjから1引けば良かろうもん?
625
(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ bd32-mEgI) 2024/12/02(月)23:07 ID:5A4jg9rQ0(1/2) AAS
>>619
[] がカンマで区切られた複数の引数を受けとる機能は入る見込み。
そのための前準備として [] の中でカンマ演算子を使うのが C++20 から非推奨になってる。 必要なら括弧で囲めばいいだけだから深刻な互換性問題にもならんだろうし。

[][] をオーバロードするとなると辻褄合わせが難しいだろうから入ることは期待できないと思う。
626: はちみつ餃子◆8X2XSCHEME (ワッチョイ bd32-mEgI) 2024/12/02(月)23:09 ID:5A4jg9rQ0(2/2) AAS
>>625
あ、アンカーを間違えた。 >>619 にすべきだね。
すまぬ。
627: (ワッチョイ c89a-+Y4l) 2024/12/04(水)01:53 ID:DpkrBRqF0(1) AAS
結局はベクトルや行列の演算の何かなんだろうから
二重配列を直接操作するというよりベクトルや行列のオブジェクトの演算を
定義する、演算子オーバーロードする、とかそういうコードを一旦書くわけには
いかないのかな?
628: (オイコラミネオ MMdd-Qs+Z) 2024/12/04(水)11:10 ID:1b6O8ksjM(1) AAS
[][]演算子が出来たら
[][][]の解釈に困るからできない

というより
[]が一つの演算子だから[][]はないし混乱のもと
[ , ]が正当
629: (アウアウエー Sa6a-VZt9) 2024/12/05(木)20:29 ID:bsPx8jUja(1) AAS
pythonみたいにhoge[:,:,::-1]みたいな描き方したい
operatorオーバーロードの仕方教えてくれ
630: (ワッチョイ 847c-0Hkv) 2024/12/06(金)19:13 ID:Ed4tJtIh0(1) AAS
どうしてもやりたいならユーザー定義リテラル使ってhoge[":;:;::-1"_slice]とか書かせるかなあ
631
(1): (ワッチョイ 5e63-64DC) 2024/12/07(土)17:49 ID:hZoDLS6H0(1) AAS
[,]とカンマ演算子の優先順位はどうなるんじゃ……
まあすでに関数の引数部分で似たような状況((, , ,))だから良いのか……
632: はちみつ餃子◆8X2XSCHEME (ワッチョイ bd32-LsAq) 2024/12/07(土)19:05 ID:bmFGOE/o0(1) AAS
>>631
先述 (>>625) の通り [] 内での (丸括弧で囲まない形での) カンマの使用は C++20 から非推奨。
これは変更に対する布石で、 C++23 からカンマは引数の区切りのカンマとして解釈されることになった。
解釈が変わる (互換性が維持されない) 変更なのだが、大量の既存のコードを検証してそれが問題になるような使い方はほとんどない (あっても簡単に迂回できる) と判断された。
633: (ワッチョイ a7ad-7Ydj) 2024/12/08(日)19:55 ID:R/m6cDay0(1) AAS
mdspan でいいんじゃないかと
634
(1): 350 (ワッチョイ 9744-3FWJ) 2024/12/30(月)01:24 ID:QjoRUJvQ0(1/2) AAS
>>316
char name[] = "sazaesan";

これ配列リテラルちゃうの?
nameはポインタだが
dc エリアに sazaesan\0 格納されるだろ
635: (ワッチョイ b6e7-F611) 2024/12/30(月)02:23 ID:OlG90g3v0(1) AAS
その話はもうええわ
636: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-1Vfr) 2024/12/30(月)03:22 ID:vy8OYYFk0(1) AAS
>>634
> これ配列リテラルちゃうの?

文字列リテラルは配列の一種ではあるが、この場合は配列一般を表すリテラルはないという意味。
(C にはコンパウンドリテラルがあるし、一部の処理系では C++ でも使える拡張があるけど。)
初期化子に現れる波括弧が配列リテラルだと誤解しているらしいことについての指摘なので文字列リテラルも配列リテラルだというのは関係がない。

> nameはポインタだが

いいえ。 name は配列。
省2
637: (ワッチョイ 9744-3FWJ) 2024/12/30(月)08:13 ID:QjoRUJvQ0(2/2) AAS
>文字列リテラルは配列の一種ではあるが、この場合は配列一般を表すリテラルはないという意味。

おおっと苦しいねぇw
638
(1): (ワッチョイ 9a79-yyCf) 2024/12/31(火)23:26 ID:xpoxeW+N0(1) AAS
>配列リテラル
そもそもこの言葉がおかしい
配列リテラルなんてものは存在しない
リテラルは数値や文字、文字列の変更不可な定数を指す用語で、配列等の変数とは間逆の存在
配列は文字列リテラルとかで初期化はできるがリテラルには分類されない
主にjavascript界隈で平気で配列リテラルなんて説明してるサイトがあるが全部間違い
639
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-1Vfr) 01/01(水)11:07 ID:KjvDobUm0(1) AAS
>>638
英単語としての literal の意味にそぐわなくても、言語仕様でリテラルという用語を割り当てられたならリテラルというしかない。
JavaScript (ECMAScript) のことはよう知らんけど仕様を見たら [] で囲んで配列を表現する文法には ArrayLiteral と書いてあるぞ。

外部リンク[html]:262.ecma-international.org
640: (ワッチョイ 8b01-rRgN) 01/01(水)11:14 ID:MMGltyx80(1) AAS
まぁ言葉の競合なんて稀によくあるし
641: 青木康善 (アウアウウー Sac7-DS50) 01/02(木)03:10 ID:2OQRwfH2a(1) AAS
独習C++今から読みます。
642: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-1Vfr) 01/02(木)12:45 ID:dC27qXct0(1/2) AAS
そうか。
643
(1): (ワッチョイ 9a79-yyCf) 01/02(木)17:05 ID:ZvjFvgyg0(1) AAS
>>639
そこ見たけどリテラルについては13.2.3 Literalsで定義されてるし
ArrayLiteralで検索したら13.2.4 Array Initializerと書いてあるから、ArrayLiteralはただの誤植だろ
そんなのを根拠にして配列リテラルなんておかしな説明が広まってるのか
644: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-mOud) 01/02(木)20:16 ID:dC27qXct0(2/2) AAS
どうだろ?
同じものでも切り口によって呼び名が違うことはあるじゃないの。
たとえば字句的には識別子と呼ばれてるものが構文の上では変数だったり型だったりするわけで。
本当になんの使い分けの意図もなく単なる間違いなんか?
いやまあ、私はよう知らんから本当に間違いなんかも知らんけど。
645: (ワッチョイ 9744-3FWJ) 01/03(金)05:19 ID:TELQMEJN0(1) AAS
>>643
だから
値による Initialize と Literal がどーちがうというんだ
何をこだわってるの?
646
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-mOud) 01/03(金)08:22 ID:N2a/+7s70(1/2) AAS
用語は概念と結び付いてる。
理屈の建て付けが用語に現れているのだから用語の間違いは理屈の理解の誤り。
こだわるべき。

訳の都合とか歴史的事情でわかりにくい変な用語になってるのもよくあることだけどな。
647: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-mOud) 01/03(金)15:37 ID:N2a/+7s70(2/2) AAS
常に厳密であるべきとまでは言わないけど、必要なときに説明できる程度にはね。
648: (ワッチョイ 8b01-rRgN) 01/03(金)16:40 ID:nAACv6m40(1) AAS
せやな
649: (ワッチョイ 23ef-s7Wh) 01/04(土)19:25 ID:Dnxz33hn0(1) AAS
ECMAScript® 2024 Language Specification
A Grammar Summary
外部リンク[html]:tc39.es
より抜粋
| PrimaryExpression :
| Literal
| ArrayLiteral
省8
650: (ワッチョイ b62b-F611) 01/04(土)19:40 ID:tP/ja7AQ0(1) AAS
その話つまんないから
651: (ワッチョイ 9732-mOud) 01/04(土)19:51 ID:1P+FhTZO0(1) AAS
関西人が河童を追い払う古代遺跡、カッパドキヤ
652: (ワッチョイ dbc7-PiQp) 01/07(火)15:04 ID:njoKzNHl0(1) AAS
初心者が聞いたら間違いなく混乱するなこりゃ
普通リテラルってデータリソース「表現」のレベルでメタキャラと対な概念、って点をまず押さえるべきなんじゃないかと
Cならバックスラッシュがリテラルかメタキャラかはシングルクウォートで囲まれるかダブルクウォートで囲まれるかで変わる、みたいな感じで

あと表現と「実装」(配列orリストorタプルetc.)をごちゃ混ぜに議論してるのも良くない…気がする
JSでの用語用法に関しては正直どうでもいい他所でやれとしか
653: (ワッチョイ 9944-7f6o) 01/09(木)16:41 ID:G2VPgYgX0(1/2) AAS
>>646
こだわってるのはお前だけ
しかも値によるInitializeとLiteralは用語の間違いではなく同じものでしかない
寝言ほざくな
654: (ワッチョイ 9944-7f6o) 01/09(木)16:43 ID:G2VPgYgX0(2/2) AAS
このはちみつなんとかて
なんでこのスレにずっと張り付いてるの?
655: (ワッチョイ d315-bDSa) 01/09(木)17:53 ID:pauriN870(1) AAS
コテハンだから目立つというだけで、名無しでずっと張り付いてるのもいるでしょ
656: (ワッチョイ 93ad-ZS2K) 01/10(金)15:09 ID:5TDMwabH0(1/2) AAS
むしろこの手のスレで名無しのすべてが毎回入れ替わって別人なんだと思えるほうが異常とも言える
657: (ワッチョイ 4b73-gMcM) 01/10(金)19:09 ID:Sq5TZMET0(1) AAS
名前が売りたいならtwitterとかで活動された方がいいんじゃないのと思っている
658: (ワッチョイ 93ad-ZS2K) 01/10(金)19:28 ID:5TDMwabH0(2/2) AAS
は?w
はちみつ餃子なんて名前売って何になるってんだ?
ペンネームかなんかで活動しているわけでもないのに
659: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9932-vZ9d) 01/10(金)19:32 ID:2xRvglud0(1/2) AAS
名前が広く知られる必要も意味もない。
話を追いやすくするのが主目的であって「私」というキャラクタを主張したいわけではないので、むしろ意図的に 5ch 上でだけはちみつ餃子と名乗ってる。
(元々はSCHEME餃子と名乗っていたが Scheme スレ以外にも書き込むので変えた。)
Twitter (X) のアカウントも持ってはいるけど。
660: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9932-vZ9d) 01/10(金)19:36 ID:2xRvglud0(2/2) AAS
議論してても別の主張と混同されたり自演認定してくるやつがいたりして本筋からズレまくって面倒くせぇことが結構あるんだよ。
コテハンはコテハンでなんだかんだ言うやつがいるからどっちもどっちで面倒くせぇけどな。
661: (ワッチョイ b101-BLbR) 01/11(土)12:15 ID:RVo7o+pP0(1) AAS
酉だけで十分では
662: (オッペケ Sr4d-8Wha) 01/11(土)20:48 ID:bI8uLgjvr(1) AAS
「一応署名」するんなら、CNはあったらいいぞ
663: (ワッチョイ 9563-sRsu) 01/18(土)07:24 ID:Kzk7GzSP0(1/2) AAS
動作から見るポインタと配列の違い……
char arr[] = "abc";
char* p = &(arr[0]);
assert(&p != &(arr[0]));
assert((void*)arr == (void*)&(arr[0]));
いや知らんけど多分……

メモリ割り付けまで見たらもっとはっきり違いがわかるパースン
664: (ワッチョイ 9563-sRsu) 01/18(土)07:27 ID:Kzk7GzSP0(2/2) AAS
訂正orz……
誤: assert((void*)arr == (void*)&(arr[0]));
正: assert((void*)&arr == (void*)&(arr[0]));
665: (ワッチョイ cfaf-BCxs) 01/24(金)23:21 ID:U5y9xmGO0(1) AAS
コンパイル時にsoファイルをリンクする時って参照されるsoファイルを参照している側よりも後ろに書くみたいなルールあると思うんだけど、
このルールに従わずsoファイルを前に書いた時にコンパイル成功する環境と失敗する環境がある

失敗するときのエラーはundefined reference errorでso側を参照しているところでエラーになってる

gccのバージョンは一応同じで、OSはwslのUbuntuとRedHat
Redhat側で成功している
コンパイルするときのコマンドは同じもの

原因ってどのへんにあるのかわかります? あるいは何らかの設定で回避できるとか
省2
666: 警備員[Lv.18] (ワッチョイ 33b8-iSs0) 01/25(土)00:01 ID:xAYAQReB0(1) AAS
環境変数の違いじゃないのLD_PRELOADとか
667: (ワッチョイ 0301-o26Q) 01/25(土)15:04 ID:Q3LYFAxD0(1) AAS
LD_PRELOADが影響与えるのは実行時なのでは?
668
(1): (ワッチョイ 7f70-FMGu) 01/25(土)15:11 ID:LC7IJQQw0(1) AAS
せやな

書ける範囲で具体的なオプションを書いてくれると助かる
もしかしてディストリでsoの置き場所が違うのにそれに対応してないとか?
669: (ワッチョイ 6f9b-Bxv4) 01/25(土)17:20 ID:W3I6NstP0(1) AAS
使ったことないけどマニュアル見る限り-tでリンクするファイル表示できるっぽいな
670: 青木康善 (アウアウウー Saa7-XwLX) 01/25(土)18:16 ID:s6qQIUHWa(1) AAS
今日から、reasonというDTMソフトの、rack extentionを作るために学ぶことに決めました。
671: 青木康善 (アウアウウー Sa47-7ROj) 01/26(日)10:12 ID:bIavjdz2a(1) AAS
core javaみたいな、書籍がC++にも無いかなあ。
672: (ワッチョイ 0eaf-cjCd) 01/26(日)16:16 ID:ZRokd9b50(1) AAS
>>668
遅くなってすまぬ
だいたいこんな感じ

失敗するコマンド
g++ -L$LibPath -lTestLib -o Test main.cpp

成功するコマンド
g++ -L$LibPath -o Test main.cpp -lTestLib
省5
673: (ワッチョイ 0b01-jk+K) 01/26(日)21:28 ID:h08Ozzg50(1) AAS
Redhatで俺様パッチでも当たってるんかな?
674: はちみつ餃子◆8X2XSCHEME (ワッチョイ 1bed-QOli) 01/27(月)10:03 ID:CEXr069M0(1) AAS
GNU Linker では順番通りに一度しか探査しない仕様なので指定の順番に意味がある。
どういう順番でも通るなら GNU Linker 以外が設定されてるんじゃないのかな。
g++ はフロントエンドに過ぎないし、呼び出すリンカを変えるように設定は出来る(されてるかもしれない)よ。
675: (ワッチョイ 0e9d-cjCd) 01/31(金)00:55 ID:07X4f1Va0(1) AAS
そういえばリンカーが何かって確認してなかった
後で確認してみる。ありがとう
676: はちみつ餃子◆8X2XSCHEME (ワッチョイ ff32-DO7v) 02/10(月)11:15 ID:cWC6BpGk0(1/2) AAS
主要なリンカとしては gold, lld, mold などがある。
これらに比べると GNU Linker は単純に遅い。
ただ、オブジェクトファイルの構造には文書化されていない場当たり的に決められた不明瞭な部分も多くてよくわからんところは「GNU Linker の挙動が仕様」みたいな扱いなので確実に「正しい動作」を期待する保守的なディストリビューションは GNU Linker を採用することも結構ある。
677
(1): (ワッチョイ 8634-aAq2) 02/10(月)17:33 ID:fQxZ+XGm0(1) AAS
グローバルな変数を使う時って、
namespace hoge{ constexpr int hoge; };

class hoge{ static int hoge; };
のどっちを使うべきですか?
678: (ワッチョイ 4663-6Hi7) 02/10(月)18:47 ID:6W8L/x5D0(1) AAS
どうでもいい
好きにやれ
679: (ワッチョイ ebda-2Ob3) 02/10(月)19:05 ID:FgXBIPm00(1) AAS
上のconstexprはいらない
何のためにつけたか不明だが
680: (ワッチョイ ff9c-mDEt) 02/10(月)19:22 ID:LsLUwoXt0(1) AAS
昔はグローバル変数の代わりに関数のstatic local 変数を使ってたけど、最近はどうなのかしらん?
681: はちみつ餃子◆8X2XSCHEME (ワッチョイ ff32-DO7v) 02/10(月)19:32 ID:cWC6BpGk0(2/2) AAS
>>677
どちらの変数もグローバル名前空間スコープで宣言されていない。
682: (ワッチョイ fd63-KThN) 02/16(日)10:13 ID:AY7cmtZI0(1/4) AAS
namespace foo { int hoge; } だとusing foo::hoge; ができるが
class Foo { public: static int hoge; } だと using Foo::hoge; できない
という印象、
683
(1): (ワッチョイ fd63-KThN) 02/16(日)10:17 ID:AY7cmtZI0(2/4) AAS
オブジェクトの寿命がプログラムの開始から終わりまでずっとあるがグローバル名前空間スコープで宣言されていないがために
グローバル変数と言ってはいけないならが
オブジェクトの寿命がプログラムの開始から終わりまでずっとあるがグローバル名前空間スコープで宣言されていないオブジェクトは
何て言えば良いんじゃ……
684
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ ed32-7Htj) 02/16(日)10:19 ID:3LJfyOAU0(1) AAS
>>683
静的記憶域期間の変数
685: (ワッチョイ fd63-KThN) 02/16(日)10:21 ID:AY7cmtZI0(3/4) AAS
今やDouble-Checked Locking is Fixed In C++11されたのだから
static local 変数を使う意味は無くなた
※ 個人の感想です
686: (ワッチョイ fd63-KThN) 02/16(日)10:23 ID:AY7cmtZI0(4/4) AAS
>>684
なるほど……
これからはレビューでグローバル変数と口走る香具師が居たらすかさず訂正を要求するわ㌧クス、
687: はちみつ餃子◆8X2XSCHEME (ワッチョイ ed32-7Htj) 02/17(月)10:05 ID:tIRsmIw80(1) AAS
言語仕様 (C++23) 内でグローバル変数 (global variable) という語を使っている箇所を検索してみたら二箇所みつけた。
外部リンク:timsong-cpp.github.io
外部リンク[path]:timsong-cpp.github.io

前者は意味がわからん……英語と C++ に詳しい人は解説してくれんか。
後者はどこで変更されるかわからんものというニュアンスで、文法上の分類としての意味はなさそう。
688: (ワッチョイ e314-MHHu) 02/17(月)10:30 ID:afCQWVrm0(1) AAS
errnoのことでしょ、昔は本当にグローバル変数だったらしいし、そのせいか今も「errnoはグローバル変数です」って説明がそこら中に転がってる
そこセクション概要だし、後者と同じで別に言語仕様上の意味はないと思う

お客様の中にC/C++/UNIX/POSIXそれぞれにおけるerrnoの仕様/記述の歴史家はおられませんか
689: (ワッチョイ fd63-KThN) 02/18(火)00:30 ID:lk7OswCX0(1/3) AAS
>グローバル変数とは、複数の関数から使用できる変数のことを言います。
>グローバル変数は、関数外で宣言された変数です。
>一方、関数の外側でも変数を宣言できます。 これを グローバル変数 と言います。
ぢつは自動変数以外はTLSもファイルスコープのやつも静的記憶期間の変数も全
部グローバル変数だったりして……
690: (ワッチョイ fd63-KThN) 02/18(火)00:33 ID:lk7OswCX0(2/3) AAS
当然オブジェクトのメンバ変数も関数の外でクラスが定義されている限り、
自動オブジェクトであってもメンバ変数は例外なくグローバル変数である
という定義にしたら単純で誤解の余地も無い
1-
あと 312 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.035s