[過去ログ]
C++相談室 part165 (1002レス)
C++相談室 part165 http://mevius.5ch.net/test/read.cgi/tech/1698705458/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
610: デフォルトの名無しさん (JP 0Hf2-Dj8N) [] 2024/12/01(日) 18:28:00.78 ID:IuCKzQHfH 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を殺す、という対症療法だけ学習しました。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/610
611: デフォルトの名無しさん (JP 0Hf2-Dj8N) [] 2024/12/01(日) 18:28:57.10 ID:IuCKzQHfH くそ!また改行がめちゃくちゃ http://mevius.5ch.net/test/read.cgi/tech/1698705458/611
612: デフォルトの名無しさん (ワッチョイ 0e62-jXfH) [sage] 2024/12/01(日) 18:31:33.21 ID:NWNsoufr0 MAPファイルの読み方を研究した方が良いかもな http://mevius.5ch.net/test/read.cgi/tech/1698705458/612
613: デフォルトの名無しさん (JP 0Hf2-Dj8N) [] 2024/12/01(日) 18:32:40.91 ID:IuCKzQHfH それに誤字だらけだし。オワタ。高齢者の認知症検査試験大丈夫かな。5年後だけど。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/613
614: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-mEgI) [sage] 2024/12/01(日) 19:20:01.62 ID:rI1+OlKH0 >>610 定義はプログラム全体でひとつとする原則 (one definition rule) は診断不要な場合がある仕様になっていて処理系が問題を検出できなくてもかまわないことを意味する。 つまりエラーが出てなくても間違っている (未定義の挙動) かもしれないので理解せずにエラーメッセージに頼るのは悪い姿勢。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/614
615: デフォルトの名無しさん (JP 0Hf2-Dj8N) [] 2024/12/01(日) 19:34:57.34 ID:IuCKzQHfH テンプレートにすると(implテクニックを使わなければ)、定義も実装も同じファイルに書かなければならないからそれが原因かなあ。とりあえず、厄介なLINKエラーは除霊されました。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/615
616: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-mEgI) [sage] 2024/12/01(日) 20:25:56.70 ID:rI1+OlKH0 >>615 テンプレート内でグローバル変数にアクセスする箇所があるってこと? それなら今はインライン変数を使うのが便利で行儀の良い作法のひとつだと考えられている。 インライン変数は C++17 からの機能なのでそれより古い規格しか使えないような事情があるなら仕方ないんだけど…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/616
617: デフォルトの名無しさん (JP 0Hf2-Dj8N) [] 2024/12/01(日) 20:32:06.26 ID:IuCKzQHfH >>616 ありがとうございます。調べてみます。 ちなみに、>>615 定義も実装も → 宣言も定義も ええいくそっ! まーた間違えた http://mevius.5ch.net/test/read.cgi/tech/1698705458/617
618: デフォルトの名無しさん (JP 0Hf2-Dj8N) [] 2024/12/01(日) 21:38:54.98 ID:IuCKzQHfH >>616 まーた、言い忘れました。まさにその状況でした。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/618
619: デフォルトの名無しさん (JP 0Hf2-Dj8N) [] 2024/12/02(月) 22:09:00.59 ID:/dQ47H+wH [][]演算子のオーバーロードが欲しい。行列を1次元配列で実装する場合、C++は行主順(行列を行ベクトルの集まりとみなす)。Blas、lapackのライブラリをビルドしたfortran77は列主順(行列を列ベクトルの集まりとみなす)。()演算子のオーバーロードでは、行主順だろうが列主順だろうが、行列Aのi行j列の要素にはA(i,j)とアクセスできるが、列主順の場合には[]演算子のオーバーロードをどうやってもA[j][i]となってしまう。それでeigenは()演算子のみをサポートしている(本当か?)。だが、A(i,j)が添字0から始まるのが気に入らん。添字が0から始まるのはA[i][j]やろうもん。 [][]のオーバーロードがあったらなあ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/619
620: デフォルトの名無しさん (ワッチョイ 00f0-X9QH) [sage] 2024/12/02(月) 22:22:03.04 ID:7rlMEi700 propertyなら簡単に多次元配列扱えそうなのに propertyいつになったら実装されるのやら http://mevius.5ch.net/test/read.cgi/tech/1698705458/620
621: デフォルトの名無しさん (ワッチョイ b701-5W+W) [sage] 2024/12/02(月) 22:30:10.13 ID:6C6t/Sm50 >>619 O [][]演算子のオーバーロードが欲しい。 O 行列を1次元配列で実装する場合、C++は行主順(行列を行ベクトルの集まりとみなす)。 O Blas、lapackのライブラリをビルドしたfortran77は列主順(行列を列ベクトルの集まりとみなす)。 X ()演算子のオーバーロードでは、行主順だろうが列主順だろうが、行列Aのi行j列の要素にはA(i,j)とアクセスできるが、 X 列主順の場合には[]演算子のオーバーロードをどうやってもA[j][i]となってしまう。 O それでeigenは()演算子のみをサポートしている(本当か?)。 X だが、A(i,j)が添字0から始まるのが気に入らん。 X 添字が0から始まるのはA[i][j]やろうもん。 O [][]のオーバーロードがあったらなあ。 行頭Xで示した文章の意味が良く分からん http://mevius.5ch.net/test/read.cgi/tech/1698705458/621
622: デフォルトの名無しさん (JP 0Hf2-Dj8N) [] 2024/12/02(月) 22:40:34.32 ID:/dQ47H+wH ああ、そう。 ところで、A(i,j)が添字0から始まるのが気にならないんだ。じゃあ、もうええわ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/622
623: デフォルトの名無しさん (ワッチョイ 0e62-jXfH) [sage] 2024/12/02(月) 22:51:18.89 ID:Fo02P0Bv0 msvc4.xxにoprater delete[]をoverideする機能が無い 所からCOMの仕様が策定されている所を考えると 面白いな http://mevius.5ch.net/test/read.cgi/tech/1698705458/623
624: デフォルトの名無しさん (ワッチョイ b701-5W+W) [sage] 2024/12/02(月) 22:58:33.93 ID:6C6t/Sm50 >>622 日本語の意味が分からんと書いている 0オフセットが嫌ならiやjから1引けば良かろうもん? http://mevius.5ch.net/test/read.cgi/tech/1698705458/624
625: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-mEgI) [sage] 2024/12/02(月) 23:07:19.64 ID:5A4jg9rQ0 >>619 [] がカンマで区切られた複数の引数を受けとる機能は入る見込み。 そのための前準備として [] の中でカンマ演算子を使うのが C++20 から非推奨になってる。 必要なら括弧で囲めばいいだけだから深刻な互換性問題にもならんだろうし。 [][] をオーバロードするとなると辻褄合わせが難しいだろうから入ることは期待できないと思う。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/625
626: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-mEgI) [sage] 2024/12/02(月) 23:09:49.14 ID:5A4jg9rQ0 >>625 あ、アンカーを間違えた。 >>619 にすべきだね。 すまぬ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/626
627: デフォルトの名無しさん (ワッチョイ c89a-+Y4l) [sage] 2024/12/04(水) 01:53:48.90 ID:DpkrBRqF0 結局はベクトルや行列の演算の何かなんだろうから 二重配列を直接操作するというよりベクトルや行列のオブジェクトの演算を 定義する、演算子オーバーロードする、とかそういうコードを一旦書くわけには いかないのかな? http://mevius.5ch.net/test/read.cgi/tech/1698705458/627
628: デフォルトの名無しさん (オイコラミネオ MMdd-Qs+Z) [sage] 2024/12/04(水) 11:10:28.05 ID:1b6O8ksjM [][]演算子が出来たら [][][]の解釈に困るからできない というより []が一つの演算子だから[][]はないし混乱のもと [ , ]が正当 http://mevius.5ch.net/test/read.cgi/tech/1698705458/628
629: デフォルトの名無しさん (アウアウエー Sa6a-VZt9) [] 2024/12/05(木) 20:29:34.16 ID:bsPx8jUja pythonみたいにhoge[:,:,::-1]みたいな描き方したい operatorオーバーロードの仕方教えてくれ http://mevius.5ch.net/test/read.cgi/tech/1698705458/629
630: デフォルトの名無しさん (ワッチョイ 847c-0Hkv) [sage] 2024/12/06(金) 19:13:10.74 ID:Ed4tJtIh0 どうしてもやりたいならユーザー定義リテラル使ってhoge[":;:;::-1"_slice]とか書かせるかなあ http://mevius.5ch.net/test/read.cgi/tech/1698705458/630
631: デフォルトの名無しさん (ワッチョイ 5e63-64DC) [sage] 2024/12/07(土) 17:49:57.38 ID:hZoDLS6H0 [,]とカンマ演算子の優先順位はどうなるんじゃ…… まあすでに関数の引数部分で似たような状況((, , ,))だから良いのか…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/631
632: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-LsAq) [sage] 2024/12/07(土) 19:05:42.44 ID:bmFGOE/o0 >>631 先述 (>>625) の通り [] 内での (丸括弧で囲まない形での) カンマの使用は C++20 から非推奨。 これは変更に対する布石で、 C++23 からカンマは引数の区切りのカンマとして解釈されることになった。 解釈が変わる (互換性が維持されない) 変更なのだが、大量の既存のコードを検証してそれが問題になるような使い方はほとんどない (あっても簡単に迂回できる) と判断された。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/632
633: デフォルトの名無しさん (ワッチョイ a7ad-7Ydj) [sage] 2024/12/08(日) 19:55:22.57 ID:R/m6cDay0 mdspan でいいんじゃないかと http://mevius.5ch.net/test/read.cgi/tech/1698705458/633
634: 350 (ワッチョイ 9744-3FWJ) [sage] 2024/12/30(月) 01:24:05.36 ID:QjoRUJvQ0 >>316 char name[] = "sazaesan"; これ配列リテラルちゃうの? nameはポインタだが dc エリアに sazaesan\0 格納されるだろ http://mevius.5ch.net/test/read.cgi/tech/1698705458/634
635: デフォルトの名無しさん (ワッチョイ b6e7-F611) [sage] 2024/12/30(月) 02:23:21.03 ID:OlG90g3v0 その話はもうええわ http://mevius.5ch.net/test/read.cgi/tech/1698705458/635
636: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9732-1Vfr) [sage] 2024/12/30(月) 03:22:33.37 ID:vy8OYYFk0 >>634 > これ配列リテラルちゃうの? 文字列リテラルは配列の一種ではあるが、この場合は配列一般を表すリテラルはないという意味。 (C にはコンパウンドリテラルがあるし、一部の処理系では C++ でも使える拡張があるけど。) 初期化子に現れる波括弧が配列リテラルだと誤解しているらしいことについての指摘なので文字列リテラルも配列リテラルだというのは関係がない。 > nameはポインタだが いいえ。 name は配列。 > dc エリアに sazaesan\0 格納されるだろ これはリテラルかどうかの話とは関係がない。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/636
637: デフォルトの名無しさん (ワッチョイ 9744-3FWJ) [sage] 2024/12/30(月) 08:13:16.60 ID:QjoRUJvQ0 >文字列リテラルは配列の一種ではあるが、この場合は配列一般を表すリテラルはないという意味。 おおっと苦しいねぇw http://mevius.5ch.net/test/read.cgi/tech/1698705458/637
638: デフォルトの名無しさん (ワッチョイ 9a79-yyCf) [sage] 2024/12/31(火) 23:26:05.62 ID:xpoxeW+N0 >配列リテラル そもそもこの言葉がおかしい 配列リテラルなんてものは存在しない リテラルは数値や文字、文字列の変更不可な定数を指す用語で、配列等の変数とは間逆の存在 配列は文字列リテラルとかで初期化はできるがリテラルには分類されない 主にjavascript界隈で平気で配列リテラルなんて説明してるサイトがあるが全部間違い http://mevius.5ch.net/test/read.cgi/tech/1698705458/638
639: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9732-1Vfr) [sage] 2025/01/01(水) 11:07:42.20 ID:KjvDobUm0 >>638 英単語としての literal の意味にそぐわなくても、言語仕様でリテラルという用語を割り当てられたならリテラルというしかない。 JavaScript (ECMAScript) のことはよう知らんけど仕様を見たら [] で囲んで配列を表現する文法には ArrayLiteral と書いてあるぞ。 https://262.ecma-international.org/15.0/index.html#prod-ArrayLiteral http://mevius.5ch.net/test/read.cgi/tech/1698705458/639
640: デフォルトの名無しさん (ワッチョイ 8b01-rRgN) [sage] 2025/01/01(水) 11:14:58.75 ID:MMGltyx80 まぁ言葉の競合なんて稀によくあるし http://mevius.5ch.net/test/read.cgi/tech/1698705458/640
641: 青木康善 (アウアウウー Sac7-DS50) [sage] 2025/01/02(木) 03:10:49.97 ID:2OQRwfH2a 独習C++今から読みます。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/641
642: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9732-1Vfr) [sage] 2025/01/02(木) 12:45:54.07 ID:dC27qXct0 そうか。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/642
643: デフォルトの名無しさん (ワッチョイ 9a79-yyCf) [sage] 2025/01/02(木) 17:05:43.34 ID:ZvjFvgyg0 >>639 そこ見たけどリテラルについては13.2.3 Literalsで定義されてるし ArrayLiteralで検索したら13.2.4 Array Initializerと書いてあるから、ArrayLiteralはただの誤植だろ そんなのを根拠にして配列リテラルなんておかしな説明が広まってるのか http://mevius.5ch.net/test/read.cgi/tech/1698705458/643
644: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9732-mOud) [sage] 2025/01/02(木) 20:16:05.92 ID:dC27qXct0 どうだろ? 同じものでも切り口によって呼び名が違うことはあるじゃないの。 たとえば字句的には識別子と呼ばれてるものが構文の上では変数だったり型だったりするわけで。 本当になんの使い分けの意図もなく単なる間違いなんか? いやまあ、私はよう知らんから本当に間違いなんかも知らんけど。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/644
645: デフォルトの名無しさん (ワッチョイ 9744-3FWJ) [sage] 2025/01/03(金) 05:19:23.99 ID:TELQMEJN0 >>643 だから 値による Initialize と Literal がどーちがうというんだ 何をこだわってるの? http://mevius.5ch.net/test/read.cgi/tech/1698705458/645
646: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9732-mOud) [sage] 2025/01/03(金) 08:22:15.04 ID:N2a/+7s70 用語は概念と結び付いてる。 理屈の建て付けが用語に現れているのだから用語の間違いは理屈の理解の誤り。 こだわるべき。 訳の都合とか歴史的事情でわかりにくい変な用語になってるのもよくあることだけどな。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/646
647: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9732-mOud) [sage] 2025/01/03(金) 15:37:54.39 ID:N2a/+7s70 常に厳密であるべきとまでは言わないけど、必要なときに説明できる程度にはね。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/647
648: デフォルトの名無しさん (ワッチョイ 8b01-rRgN) [sage] 2025/01/03(金) 16:40:53.84 ID:nAACv6m40 せやな http://mevius.5ch.net/test/read.cgi/tech/1698705458/648
649: デフォルトの名無しさん (ワッチョイ 23ef-s7Wh) [sage] 2025/01/04(土) 19:25:11.41 ID:Dnxz33hn0 ECMAScript® 2024 Language Specification A Grammar Summary https://tc39.es/ecma262/2024/multipage/grammar-summary.html#sec-grammar-summary より抜粋 | PrimaryExpression : | Literal | ArrayLiteral | ObjectLiteral | RegularExpressionLiteral | | Initializer : | = AssignmentExpression camel case の『ArrayLiteral』等は文法記法上のシンボルであり専用の(斜体)フォントが使用されている。 『ArrayLiteral』は『PrimaryExpression』の下に『Literal』や『RegularExpressionLiteral』等と並んで定義されているので『Literal』の下には無い。 これを踏まえて、何故『ArrayInitializer』というシンボル名にしなかったのかという疑問なら話が分かる。C や C++ の『Initializer』関連も参考になる。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/649
650: デフォルトの名無しさん (ワッチョイ b62b-F611) [sage] 2025/01/04(土) 19:40:45.61 ID:tP/ja7AQ0 その話つまんないから http://mevius.5ch.net/test/read.cgi/tech/1698705458/650
651: デフォルトの名無しさん (ワッチョイ 9732-mOud) [sage] 2025/01/04(土) 19:51:17.23 ID:1P+FhTZO0 関西人が河童を追い払う古代遺跡、カッパドキヤ http://mevius.5ch.net/test/read.cgi/tech/1698705458/651
652: デフォルトの名無しさん (ワッチョイ dbc7-PiQp) [sage] 2025/01/07(火) 15:04:17.79 ID:njoKzNHl0 初心者が聞いたら間違いなく混乱するなこりゃ 普通リテラルってデータリソース「表現」のレベルでメタキャラと対な概念、って点をまず押さえるべきなんじゃないかと Cならバックスラッシュがリテラルかメタキャラかはシングルクウォートで囲まれるかダブルクウォートで囲まれるかで変わる、みたいな感じで あと表現と「実装」(配列orリストorタプルetc.)をごちゃ混ぜに議論してるのも良くない…気がする JSでの用語用法に関しては正直どうでもいい他所でやれとしか http://mevius.5ch.net/test/read.cgi/tech/1698705458/652
653: デフォルトの名無しさん (ワッチョイ 9944-7f6o) [sage] 2025/01/09(木) 16:41:07.20 ID:G2VPgYgX0 >>646 こだわってるのはお前だけ しかも値によるInitializeとLiteralは用語の間違いではなく同じものでしかない 寝言ほざくな http://mevius.5ch.net/test/read.cgi/tech/1698705458/653
654: デフォルトの名無しさん (ワッチョイ 9944-7f6o) [sage] 2025/01/09(木) 16:43:12.80 ID:G2VPgYgX0 このはちみつなんとかて なんでこのスレにずっと張り付いてるの? http://mevius.5ch.net/test/read.cgi/tech/1698705458/654
655: デフォルトの名無しさん (ワッチョイ d315-bDSa) [sage] 2025/01/09(木) 17:53:02.65 ID:pauriN870 コテハンだから目立つというだけで、名無しでずっと張り付いてるのもいるでしょ http://mevius.5ch.net/test/read.cgi/tech/1698705458/655
656: デフォルトの名無しさん (ワッチョイ 93ad-ZS2K) [sage] 2025/01/10(金) 15:09:57.30 ID:5TDMwabH0 むしろこの手のスレで名無しのすべてが毎回入れ替わって別人なんだと思えるほうが異常とも言える http://mevius.5ch.net/test/read.cgi/tech/1698705458/656
657: デフォルトの名無しさん (ワッチョイ 4b73-gMcM) [sage] 2025/01/10(金) 19:09:29.05 ID:Sq5TZMET0 名前が売りたいならtwitterとかで活動された方がいいんじゃないのと思っている http://mevius.5ch.net/test/read.cgi/tech/1698705458/657
658: デフォルトの名無しさん (ワッチョイ 93ad-ZS2K) [sage] 2025/01/10(金) 19:28:58.52 ID:5TDMwabH0 は?w はちみつ餃子なんて名前売って何になるってんだ? ペンネームかなんかで活動しているわけでもないのに http://mevius.5ch.net/test/read.cgi/tech/1698705458/658
659: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9932-vZ9d) [sage] 2025/01/10(金) 19:32:01.54 ID:2xRvglud0 名前が広く知られる必要も意味もない。 話を追いやすくするのが主目的であって「私」というキャラクタを主張したいわけではないので、むしろ意図的に 5ch 上でだけはちみつ餃子と名乗ってる。 (元々はSCHEME餃子と名乗っていたが Scheme スレ以外にも書き込むので変えた。) Twitter (X) のアカウントも持ってはいるけど。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/659
660: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9932-vZ9d) [sage] 2025/01/10(金) 19:36:59.79 ID:2xRvglud0 議論してても別の主張と混同されたり自演認定してくるやつがいたりして本筋からズレまくって面倒くせぇことが結構あるんだよ。 コテハンはコテハンでなんだかんだ言うやつがいるからどっちもどっちで面倒くせぇけどな。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/660
661: デフォルトの名無しさん (ワッチョイ b101-BLbR) [sage] 2025/01/11(土) 12:15:30.40 ID:RVo7o+pP0 酉だけで十分では http://mevius.5ch.net/test/read.cgi/tech/1698705458/661
662: デフォルトの名無しさん (オッペケ Sr4d-8Wha) [sage] 2025/01/11(土) 20:48:36.46 ID:bI8uLgjvr 「一応署名」するんなら、CNはあったらいいぞ http://mevius.5ch.net/test/read.cgi/tech/1698705458/662
663: デフォルトの名無しさん (ワッチョイ 9563-sRsu) [sage] 2025/01/18(土) 07:24:59.91 ID:Kzk7GzSP0 動作から見るポインタと配列の違い…… char arr[] = "abc"; char* p = &(arr[0]); assert(&p != &(arr[0])); assert((void*)arr == (void*)&(arr[0])); いや知らんけど多分…… メモリ割り付けまで見たらもっとはっきり違いがわかるパースン http://mevius.5ch.net/test/read.cgi/tech/1698705458/663
664: デフォルトの名無しさん (ワッチョイ 9563-sRsu) [sage] 2025/01/18(土) 07:27:41.04 ID:Kzk7GzSP0 訂正orz…… 誤: assert((void*)arr == (void*)&(arr[0])); 正: assert((void*)&arr == (void*)&(arr[0])); http://mevius.5ch.net/test/read.cgi/tech/1698705458/664
665: デフォルトの名無しさん (ワッチョイ cfaf-BCxs) [sage] 2025/01/24(金) 23:21:44.53 ID:U5y9xmGO0 コンパイル時にsoファイルをリンクする時って参照されるsoファイルを参照している側よりも後ろに書くみたいなルールあると思うんだけど、 このルールに従わずsoファイルを前に書いた時にコンパイル成功する環境と失敗する環境がある 失敗するときのエラーはundefined reference errorでso側を参照しているところでエラーになってる gccのバージョンは一応同じで、OSはwslのUbuntuとRedHat Redhat側で成功している コンパイルするときのコマンドは同じもの 原因ってどのへんにあるのかわかります? あるいは何らかの設定で回避できるとか 似た事象でこの辺が引っかかったけど答えはなかった ttps://forums.debian.net/viewtopic.php?t=152808 http://mevius.5ch.net/test/read.cgi/tech/1698705458/665
666: 警備員[Lv.18] (ワッチョイ 33b8-iSs0) [sage] 2025/01/25(土) 00:01:43.45 ID:xAYAQReB0 環境変数の違いじゃないのLD_PRELOADとか http://mevius.5ch.net/test/read.cgi/tech/1698705458/666
667: デフォルトの名無しさん (ワッチョイ 0301-o26Q) [sage] 2025/01/25(土) 15:04:34.61 ID:Q3LYFAxD0 LD_PRELOADが影響与えるのは実行時なのでは? http://mevius.5ch.net/test/read.cgi/tech/1698705458/667
668: デフォルトの名無しさん (ワッチョイ 7f70-FMGu) [sage] 2025/01/25(土) 15:11:01.85 ID:LC7IJQQw0 せやな 書ける範囲で具体的なオプションを書いてくれると助かる もしかしてディストリでsoの置き場所が違うのにそれに対応してないとか? http://mevius.5ch.net/test/read.cgi/tech/1698705458/668
669: デフォルトの名無しさん (ワッチョイ 6f9b-Bxv4) [sage] 2025/01/25(土) 17:20:55.15 ID:W3I6NstP0 使ったことないけどマニュアル見る限り-tでリンクするファイル表示できるっぽいな http://mevius.5ch.net/test/read.cgi/tech/1698705458/669
670: 青木康善 (アウアウウー Saa7-XwLX) [sage] 2025/01/25(土) 18:16:04.92 ID:s6qQIUHWa 今日から、reasonというDTMソフトの、rack extentionを作るために学ぶことに決めました。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/670
671: 青木康善 (アウアウウー Sa47-7ROj) [sage] 2025/01/26(日) 10:12:34.34 ID:bIavjdz2a core javaみたいな、書籍がC++にも無いかなあ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/671
672: デフォルトの名無しさん (ワッチョイ 0eaf-cjCd) [sage] 2025/01/26(日) 16:16:40.95 ID:ZRokd9b50 >>668 遅くなってすまぬ だいたいこんな感じ 失敗するコマンド g++ -L$LibPath -lTestLib -o Test main.cpp 成功するコマンド g++ -L$LibPath -o Test main.cpp -lTestLib TestLibのファイル名はlibTestLib.so このあたりを読むに(ttps://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html) リンク時のライブラリ指定の順番的は後者が正しいと思うんだけど、なぜかRedHatの方だとエラーが出ない RedHatの動的ライブラリ周りの記述を見ると"gcc ... -Llibrary_path -lfoo ..."みたいな書き方しかしていない https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/developing_c_and_cpp_applications_in_rhel_9/using-libraries-with-gcc_assembly_creating-c-or-cpp-applications#using-a-dynamic-library-with-gcc_using-libraries-with-gcc http://mevius.5ch.net/test/read.cgi/tech/1698705458/672
673: デフォルトの名無しさん (ワッチョイ 0b01-jk+K) [sage] 2025/01/26(日) 21:28:32.98 ID:h08Ozzg50 Redhatで俺様パッチでも当たってるんかな? http://mevius.5ch.net/test/read.cgi/tech/1698705458/673
674: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1bed-QOli) [sage] 2025/01/27(月) 10:03:20.61 ID:CEXr069M0 GNU Linker では順番通りに一度しか探査しない仕様なので指定の順番に意味がある。 どういう順番でも通るなら GNU Linker 以外が設定されてるんじゃないのかな。 g++ はフロントエンドに過ぎないし、呼び出すリンカを変えるように設定は出来る(されてるかもしれない)よ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/674
675: デフォルトの名無しさん (ワッチョイ 0e9d-cjCd) [sage] 2025/01/31(金) 00:55:21.04 ID:07X4f1Va0 そういえばリンカーが何かって確認してなかった 後で確認してみる。ありがとう http://mevius.5ch.net/test/read.cgi/tech/1698705458/675
676: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-DO7v) [sage] 2025/02/10(月) 11:15:20.00 ID:cWC6BpGk0 主要なリンカとしては gold, lld, mold などがある。 これらに比べると GNU Linker は単純に遅い。 ただ、オブジェクトファイルの構造には文書化されていない場当たり的に決められた不明瞭な部分も多くてよくわからんところは「GNU Linker の挙動が仕様」みたいな扱いなので確実に「正しい動作」を期待する保守的なディストリビューションは GNU Linker を採用することも結構ある。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/676
677: デフォルトの名無しさん (ワッチョイ 8634-aAq2) [sage] 2025/02/10(月) 17:33:04.35 ID:fQxZ+XGm0 グローバルな変数を使う時って、 namespace hoge{ constexpr int hoge; }; と class hoge{ static int hoge; }; のどっちを使うべきですか? http://mevius.5ch.net/test/read.cgi/tech/1698705458/677
678: デフォルトの名無しさん (ワッチョイ 4663-6Hi7) [sage] 2025/02/10(月) 18:47:33.05 ID:6W8L/x5D0 どうでもいい 好きにやれ http://mevius.5ch.net/test/read.cgi/tech/1698705458/678
679: デフォルトの名無しさん (ワッチョイ ebda-2Ob3) [sage] 2025/02/10(月) 19:05:23.46 ID:FgXBIPm00 上のconstexprはいらない 何のためにつけたか不明だが http://mevius.5ch.net/test/read.cgi/tech/1698705458/679
680: デフォルトの名無しさん (ワッチョイ ff9c-mDEt) [sage] 2025/02/10(月) 19:22:59.53 ID:LsLUwoXt0 昔はグローバル変数の代わりに関数のstatic local 変数を使ってたけど、最近はどうなのかしらん? http://mevius.5ch.net/test/read.cgi/tech/1698705458/680
681: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-DO7v) [sage] 2025/02/10(月) 19:32:01.21 ID:cWC6BpGk0 >>677 どちらの変数もグローバル名前空間スコープで宣言されていない。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/681
682: デフォルトの名無しさん (ワッチョイ fd63-KThN) [sage] 2025/02/16(日) 10:13:30.97 ID:AY7cmtZI0 namespace foo { int hoge; } だとusing foo::hoge; ができるが class Foo { public: static int hoge; } だと using Foo::hoge; できない という印象、 http://mevius.5ch.net/test/read.cgi/tech/1698705458/682
683: デフォルトの名無しさん (ワッチョイ fd63-KThN) [sage] 2025/02/16(日) 10:17:01.36 ID:AY7cmtZI0 オブジェクトの寿命がプログラムの開始から終わりまでずっとあるがグローバル名前空間スコープで宣言されていないがために グローバル変数と言ってはいけないならが オブジェクトの寿命がプログラムの開始から終わりまでずっとあるがグローバル名前空間スコープで宣言されていないオブジェクトは 何て言えば良いんじゃ…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/683
684: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-7Htj) [sage] 2025/02/16(日) 10:19:16.22 ID:3LJfyOAU0 >>683 静的記憶域期間の変数 http://mevius.5ch.net/test/read.cgi/tech/1698705458/684
685: デフォルトの名無しさん (ワッチョイ fd63-KThN) [sage] 2025/02/16(日) 10:21:00.02 ID:AY7cmtZI0 今やDouble-Checked Locking is Fixed In C++11されたのだから static local 変数を使う意味は無くなた ※ 個人の感想です http://mevius.5ch.net/test/read.cgi/tech/1698705458/685
686: デフォルトの名無しさん (ワッチョイ fd63-KThN) [sage] 2025/02/16(日) 10:23:32.78 ID:AY7cmtZI0 >>684 なるほど…… これからはレビューでグローバル変数と口走る香具師が居たらすかさず訂正を要求するわ㌧クス、 http://mevius.5ch.net/test/read.cgi/tech/1698705458/686
687: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-7Htj) [sage] 2025/02/17(月) 10:05:32.77 ID:tIRsmIw80 言語仕様 (C++23) 内でグローバル変数 (global variable) という語を使っている箇所を検索してみたら二箇所みつけた。 https://timsong-cpp.github.io/cppwp/n4950/diagnostics.general#2 https://timsong-cpp.github.io/cppwp/n4950/fs.op.current.path#5 前者は意味がわからん……英語と C++ に詳しい人は解説してくれんか。 後者はどこで変更されるかわからんものというニュアンスで、文法上の分類としての意味はなさそう。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/687
688: デフォルトの名無しさん (ワッチョイ e314-MHHu) [sage] 2025/02/17(月) 10:30:13.63 ID:afCQWVrm0 errnoのことでしょ、昔は本当にグローバル変数だったらしいし、そのせいか今も「errnoはグローバル変数です」って説明がそこら中に転がってる そこセクション概要だし、後者と同じで別に言語仕様上の意味はないと思う お客様の中にC/C++/UNIX/POSIXそれぞれにおけるerrnoの仕様/記述の歴史家はおられませんか http://mevius.5ch.net/test/read.cgi/tech/1698705458/688
689: デフォルトの名無しさん (ワッチョイ fd63-KThN) [sage] 2025/02/18(火) 00:30:31.98 ID:lk7OswCX0 >グローバル変数とは、複数の関数から使用できる変数のことを言います。 >グローバル変数は、関数外で宣言された変数です。 >一方、関数の外側でも変数を宣言できます。 これを グローバル変数 と言います。 ぢつは自動変数以外はTLSもファイルスコープのやつも静的記憶期間の変数も全 部グローバル変数だったりして…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/689
690: デフォルトの名無しさん (ワッチョイ fd63-KThN) [sage] 2025/02/18(火) 00:33:19.53 ID:lk7OswCX0 当然オブジェクトのメンバ変数も関数の外でクラスが定義されている限り、 自動オブジェクトであってもメンバ変数は例外なくグローバル変数である という定義にしたら単純で誤解の余地も無い http://mevius.5ch.net/test/read.cgi/tech/1698705458/690
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 312 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.025s