次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part133
http://mevius.5ch.net/test/read.cgi/tech/1511509970/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
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
探検
C++相談室 part134
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 5fcb-Q2eK)
2018/01/20(土) 09:05:42.21ID:mJKRg6iz0413デフォルトの名無しさん (ワッチョイ 079b-esDK)
2018/03/04(日) 01:14:01.78ID:fY1aJvVU0 >>410
2017で治ったんじゃなかったか
2017で治ったんじゃなかったか
414デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/04(日) 01:15:23.20ID:BtVPmkEs0 だいたいwchar_tとかcharの倍容量を食うじゃん?
2が3になるとかならまだしも1が2になるというのは精神的にインパクトがデカイ
L"Hello World!"のバイナリをダンプしてみたらトラウマを抱え込むレヴェル
というのもあるし他環境とのソースコード共通化も視野に入れる場合やっぱマルチバイトしか…
2が3になるとかならまだしも1が2になるというのは精神的にインパクトがデカイ
L"Hello World!"のバイナリをダンプしてみたらトラウマを抱え込むレヴェル
というのもあるし他環境とのソースコード共通化も視野に入れる場合やっぱマルチバイトしか…
415デフォルトの名無しさん (ワッチョイ dfe1-9jF/)
2018/03/04(日) 01:35:20.32ID:pARrwnK20 WindowsのUNICODE版APIはUTF-8と相性が悪いからクソ
416はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/04(日) 01:39:19.42ID:R9gQD4Ga0 せやろか?
内部表現として使う文には UTF-16 って良いと思うけどな。
UTF-8 との間なら変換コストも大したことないし。
内部表現として使う文には UTF-16 って良いと思うけどな。
UTF-8 との間なら変換コストも大したことないし。
417デフォルトの名無しさん (ワッチョイ 8723-WWZl)
2018/03/04(日) 02:20:02.75ID:8pLLmBBd0 >>416
iOS / macOS / Windows / Java と多くのプラットフォームの
API で文字列としてUTF-16 が使われてるから割と使うけど、
近年多用される絵文字とかが全然1文字1符号にならんので
ロジックを基準する上ではUTF-8より便利ってわけでもない。
文字列の処理を描くときは合字以外は1文字1符号になるUCS4 の方が良い。
iOS / macOS / Windows / Java と多くのプラットフォームの
API で文字列としてUTF-16 が使われてるから割と使うけど、
近年多用される絵文字とかが全然1文字1符号にならんので
ロジックを基準する上ではUTF-8より便利ってわけでもない。
文字列の処理を描くときは合字以外は1文字1符号になるUCS4 の方が良い。
418デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/04(日) 02:23:18.11ID:FSOQNU6I0 なぜ世界中の頭脳を集結させても完璧な文字コードは作れないのか
419デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/04(日) 02:28:31.88ID:BtVPmkEs0 x86アーキテクチャーがRISC-Vに置き換わったら考えるわノシ
420デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/04(日) 02:42:05.74ID:BtVPmkEs0 ていうかコルモゴロフ複雑性が計算可能関数だったら考えるわノシ
421デフォルトの名無しさん (ワッチョイ df34-CuRu)
2018/03/04(日) 02:53:03.62ID:QKjmCs/V0 韓国がUNICODEにすごい文字数予約済みにしてあるとか聞いたことある
422デフォルトの名無しさん (ワッチョイ 7feb-Vmra)
2018/03/04(日) 03:02:28.08ID:ymM0nha90 あの言語動的に文字生成でもしないと無駄多杉だろ
423はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/04(日) 03:02:39.39ID:R9gQD4Ga0424デフォルトの名無しさん (ワッチョイ 8723-WWZl)
2018/03/04(日) 03:56:38.94ID:8pLLmBBd0 >>423
UTF-16 だとサロゲートペアが出てくるからマルチバイトがマルチワードになるだけ
ucs4 だとそれが要らなくて符合とコードポイントが1:1対応になるんだよ。
何年か前まではサロゲートペア?なにそれおいしいの?でも済んでたけど
今の時代それは無理だし
UTF-16 だとサロゲートペアが出てくるからマルチバイトがマルチワードになるだけ
ucs4 だとそれが要らなくて符合とコードポイントが1:1対応になるんだよ。
何年か前まではサロゲートペア?なにそれおいしいの?でも済んでたけど
今の時代それは無理だし
425デフォルトの名無しさん (ワッチョイ 8723-WWZl)
2018/03/04(日) 04:09:09.92ID:8pLLmBBd0 要は
utf-8、utf-16 → 1符合 ≠ 1コードポイント ≠ 1文字
ucs4 → 1符合 = 1コードポイント ≠ 1文字
だから完全自作の文字列処理ではucs4が楽だよという意見でした
テキストなんてたいしてメモリ食わないしね
おしまい
utf-8、utf-16 → 1符合 ≠ 1コードポイント ≠ 1文字
ucs4 → 1符合 = 1コードポイント ≠ 1文字
だから完全自作の文字列処理ではucs4が楽だよという意見でした
テキストなんてたいしてメモリ食わないしね
おしまい
426デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/04(日) 04:09:59.70ID:FSOQNU6I0 charset_cast<utf_8>()みたいなの欲しい
427はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/04(日) 08:42:48.43ID:R9gQD4Ga0 おっと、 u16string のイテレータはサロゲートペアは解決してくれないのか。
まあそれも小さなラッパを作ればどうとでもなる。
まあそれも小さなラッパを作ればどうとでもなる。
428デフォルトの名無しさん (ワッチョイ bfe7-s382)
2018/03/04(日) 09:34:29.91ID:LharAyAs0 UTF16でサロゲートでガチャガチャやるくらいならUTF8でちゃんとやった方が実り多いし
そんなんやりたくないならUTF32使えばいいし
中途半端だよねUTF16
そんなんやりたくないならUTF32使えばいいし
中途半端だよねUTF16
429デフォルトの名無しさん (ワッチョイ df6e-m1UI)
2018/03/04(日) 09:38:06.05ID:ZPPAxORI0 ワイドのようで実はマルチ
430デフォルトの名無しさん (アウアウカー Sabb-5mf3)
2018/03/04(日) 10:55:23.96ID:kJ02m0gha どこかでみたけど歴史的にはutf32やutf16よりutf8が新しいんだろ?
431デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/04(日) 12:59:59.04ID:hIgSiiXH0 オリジナルのXEROXのコードへの先祖返りではないかな?
432デフォルトの名無しさん (マクド FFbb-x7J7)
2018/03/04(日) 14:09:11.62ID:GeBypOU0F visualstudio2017でBoost.Testを試したいのですがうまく行きません。
Nugetでboost-vc141をインストールしてテストプロジェクトをWindowsコンソールアプリケーションとして
追加し、Helloworld的なテストプログラムを書きました。
ビルドは通るのですが、テストエクスプローラーにテストが認識されません。
#include "stdafx.h"
#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(my_boost_test) {
const int x = 1;
BOOST_CHECK(x == 1);
BOOST_CHECK(x != 1);
}
VisualStudio2017のバージョンは15.5.7で
「Boost.Testのテスト アダプター」はデフォルトでインストールされるようになっていたので
インストールされています。
Nugetでboost-vc141をインストールしてテストプロジェクトをWindowsコンソールアプリケーションとして
追加し、Helloworld的なテストプログラムを書きました。
ビルドは通るのですが、テストエクスプローラーにテストが認識されません。
#include "stdafx.h"
#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(my_boost_test) {
const int x = 1;
BOOST_CHECK(x == 1);
BOOST_CHECK(x != 1);
}
VisualStudio2017のバージョンは15.5.7で
「Boost.Testのテスト アダプター」はデフォルトでインストールされるようになっていたので
インストールされています。
433デフォルトの名無しさん (ワッチョイ a7b3-m1UI)
2018/03/06(火) 00:41:37.37ID:MSLc23us0 標準ライブラリを前方宣言にすることに意味ってありますか?
434デフォルトの名無しさん (ワッチョイ 677f-m1UI)
2018/03/06(火) 00:45:13.63ID:jqoml9jL0 メイヤーズは普通にインクルードしろって言ってた
435デフォルトの名無しさん (ワッチョイ dfcb-pwu8)
2018/03/06(火) 01:45:01.96ID:RorZBCxf0 >>434
それどこに書いてあるの?
それどこに書いてあるの?
436デフォルトの名無しさん (アウアウオー Sa9f-JHL/)
2018/03/06(火) 06:16:57.53ID:HL6NWtm0a newした配列がいつの間にか解放されてて、
プログラムの最後でdeleteすると必ずアクセスエラーで落ちるんですが、
newは勝手に解放されることあるんですか?
プログラムの最後でdeleteすると必ずアクセスエラーで落ちるんですが、
newは勝手に解放されることあるんですか?
437デフォルトの名無しさん (ワッチョイ df33-k3ZN)
2018/03/06(火) 07:19:59.92ID:18YefqDd0 >>436 どっかで未定義動作に堕ちてるならそんな結果になることもあるだろね。
438デフォルトの名無しさん (ワッチョイ bfe7-s382)
2018/03/06(火) 07:39:27.47ID:YXZKPZh60 ・どっかでメモリの取り扱い間違えてnewの管理情報を踏んづけて壊してる
・unique_ptrやshared_ptr、その他スマートポインタ的なものに理解せずに渡してる
多分このどっちか
・unique_ptrやshared_ptr、その他スマートポインタ的なものに理解せずに渡してる
多分このどっちか
439デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/06(火) 07:56:08.66ID:4Jw7uGdF0 ポインタがnewで帰ってきたアドレスと違う可能性
440デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/06(火) 11:04:41.26ID:PuW1uuBL0441デフォルトの名無しさん (ワッチョイ df60-k3ZN)
2018/03/06(火) 13:48:19.62ID:xvhpcg6j0442デフォルトの名無しさん (ワッチョイ df60-k3ZN)
2018/03/06(火) 13:50:16.42ID:xvhpcg6j0443デフォルトの名無しさん (ワッチョイ 7fcc-wl/W)
2018/03/06(火) 15:12:07.82ID:p6GeX8860 ファイル分割をしてみたく、プログラムをヘッダファイルとcppファイルに分割しようと挑戦したのですがよくわからないエラーが出まくります・・
プログラム超初心者なので凄い初歩的な部分を間違えているかもしれません・・・
エラーですが、ヘッダファイルの方で
'vector':'std'のメンバーではありません
'vector':定義されていない識別子です
'string':定義されていない識別子です
'cv': 識別子がクラス名でも名前空間名でもありません。
'Mat':定義されていない識別子です
'ofstream':'std'のメンバーではありません
'ofstream':定義されていない識別子です
みたいなエラーが出ます。
ヘッダファイルは、二重インクルードガードと関数のプロトタイプ宣言しかしていないのですが
上のようにそ、のプロトタイプ宣言の型とかに対してのエラーが出まくります
何かヘッダファイルに付けたほうがいいのでしょうか?
分かる方がいたら、教えていただけますでしょうか。
ちなみに、visual studio で作業していて、プロジェクトはコンソールアプリケーションで作っています。
もしかして、自分でmakefileとかを作る必要があるのでしょうか?
プログラム超初心者なので凄い初歩的な部分を間違えているかもしれません・・・
エラーですが、ヘッダファイルの方で
'vector':'std'のメンバーではありません
'vector':定義されていない識別子です
'string':定義されていない識別子です
'cv': 識別子がクラス名でも名前空間名でもありません。
'Mat':定義されていない識別子です
'ofstream':'std'のメンバーではありません
'ofstream':定義されていない識別子です
みたいなエラーが出ます。
ヘッダファイルは、二重インクルードガードと関数のプロトタイプ宣言しかしていないのですが
上のようにそ、のプロトタイプ宣言の型とかに対してのエラーが出まくります
何かヘッダファイルに付けたほうがいいのでしょうか?
分かる方がいたら、教えていただけますでしょうか。
ちなみに、visual studio で作業していて、プロジェクトはコンソールアプリケーションで作っています。
もしかして、自分でmakefileとかを作る必要があるのでしょうか?
444片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-dixK)
2018/03/06(火) 15:14:49.26ID:W0MQjqG0d ヘッダーの方で
#include <vector>
などが足りないのでは。
ヘッダーは、自己完結にした方がいいらしい。
#include <vector>
などが足りないのでは。
ヘッダーは、自己完結にした方がいいらしい。
445デフォルトの名無しさん (ワッチョイ 7fcc-1LYG)
2018/03/06(火) 15:40:05.75ID:p6GeX8860 よく見たら、自分の参考にしていたページでヘッダファイルのincludeは最小限に抑えると書いていました…
てっきり、ヘッダファイルではincludeはしないものなのかと…
最小限というのは、エラーが回避できるstdio.hとかの最小限のファイルだけヘッダでincludeして、他のmath.hなどはcppファイルでincludeすればいい感じですか?
てっきり、ヘッダファイルではincludeはしないものなのかと…
最小限というのは、エラーが回避できるstdio.hとかの最小限のファイルだけヘッダでincludeして、他のmath.hなどはcppファイルでincludeすればいい感じですか?
446片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-dixK)
2018/03/06(火) 15:50:38.20ID:W0MQjqG0d 最小限というのは、コンパイル時間、ビルド時間を短縮するためだから、小さなプログラムでは気にする必要はない。
cppとhppで#includeを分けるというのはよくあることだ。
cppとhppで#includeを分けるというのはよくあることだ。
447デフォルトの名無しさん (ワッチョイ 7fcc-1LYG)
2018/03/06(火) 16:05:55.81ID:p6GeX8860 ありがとうございます!
448デフォルトの名無しさん (ワッチョイ 6793-fJrP)
2018/03/06(火) 16:16:08.19ID:r6wtBatS0449デフォルトの名無しさん
2018/03/06(火) 17:54:41.92 Cソースのincludeの位置にヘッダファイルの中身を貼り付けたときにコンパイルできなきゃだめ
たぶんCソースの中で他のincludeよりも前に新しいヘッダファイルのincludeを書いてるんだろう
たぶんCソースの中で他のincludeよりも前に新しいヘッダファイルのincludeを書いてるんだろう
450デフォルトの名無しさん (ワッチョイ 7fcc-1LYG)
2018/03/06(火) 18:15:37.24ID:p6GeX8860451デフォルトの名無しさん (アウアウオー Sa9f-JHL/)
2018/03/06(火) 22:17:21.07ID:i8Fah5dFa >>438
前者っぽいでした
前者っぽいでした
452デフォルトの名無しさん (アウアウウー Sa2b-wl/W)
2018/03/06(火) 23:34:50.60ID:pZOZvbRza C++のリファレンスとかで[first,last)というふうに左右で括弧が違う表記があるんだけど、これはIteratorに関しての表記ですか?
453デフォルトの名無しさん (ワッチョイ df60-k3ZN)
2018/03/06(火) 23:42:46.07ID:xvhpcg6j0454デフォルトの名無しさん (ワッチョイ 07eb-n++H)
2018/03/06(火) 23:43:09.96ID:ey0B6I8l0455デフォルトの名無しさん (ワッチョイ a7b3-m1UI)
2018/03/06(火) 23:47:04.41ID:MSLc23us0 https://ttsuki.github.io/styleguide/cppguide.ja.html#Forward_Declarations
前方宣言ってしたほうがいいのか、しないほうがいいのかどっちなんですかね
前方宣言ってしたほうがいいのか、しないほうがいいのかどっちなんですかね
456デフォルトの名無しさん (アウアウウー Sa2b-wl/W)
2018/03/06(火) 23:50:38.84ID:pZOZvbRza >>453,454 数学でしたか!勉強になります。
457デフォルトの名無しさん (ワッチョイ 2723-SQy9)
2018/03/07(水) 00:29:35.52ID:+JS1hm360 mutex g_Mtx;
int g_Val = 0;
int Func( int A, int B )
{
int Val = A * B;
lock_guard<mutex> Lock( g_Mtx );
return g_Val = Val;
}
void ThreadFunc0()
{
int Val = Func( 2, 3 );
// Valを参照する処理
}
void ThreadFunc1()
{
lock_guard<mutex> Lock( g_Mtx );
// g_Valを参照する処理
}
上記のようなスレッド関数が非同期に実行されるとき、
Func()はスレッドセーフ(g_Val書き換え中に参照されない)でしょうか?
(1)lock_guard<mutex>によるミューテックスロック
(2)g_Valの書き換え
(3)戻り値を呼び出し元スレッドにコピー(あるいはムーブ)
(4)lock_guard<mutex>がスコープから外れアンロック
というシーケンスを期待しています。
int g_Val = 0;
int Func( int A, int B )
{
int Val = A * B;
lock_guard<mutex> Lock( g_Mtx );
return g_Val = Val;
}
void ThreadFunc0()
{
int Val = Func( 2, 3 );
// Valを参照する処理
}
void ThreadFunc1()
{
lock_guard<mutex> Lock( g_Mtx );
// g_Valを参照する処理
}
上記のようなスレッド関数が非同期に実行されるとき、
Func()はスレッドセーフ(g_Val書き換え中に参照されない)でしょうか?
(1)lock_guard<mutex>によるミューテックスロック
(2)g_Valの書き換え
(3)戻り値を呼び出し元スレッドにコピー(あるいはムーブ)
(4)lock_guard<mutex>がスコープから外れアンロック
というシーケンスを期待しています。
458デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/07(水) 00:29:47.60ID:6+ILModc0 endならともかくlastは区間内の最後の要素なんじゃ…
459デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 10:09:55.97ID:ukyKg6LAa 基本的な質問なのですが、以下のプログラムがエラーになるのはなぜでしょうか?
char* pc = "abc";
pc[0] = 'z';
cout << pc << endl;
以下のプログラムでは意図通りに動きます。
char ac[] = { 'a', 'b', 'c', '\0' };
cout << ac << endl;
ac[0] = 'z';
cout << ac << endl;
char* pc = "abc";
pc[0] = 'z';
cout << pc << endl;
以下のプログラムでは意図通りに動きます。
char ac[] = { 'a', 'b', 'c', '\0' };
cout << ac << endl;
ac[0] = 'z';
cout << ac << endl;
460はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 10:14:51.80ID:TWOfgg7C0 >>459
上は変数 pc はリテラル文字列の先頭を指すポインタ。
下の変数 ac は配列で、それを文字列 "abc" で初期化するって意味。
リテラルの破壊は未定義。
破壊しないことをあてにして破壊不可能なセクション (メモリ領域) に配置されたりすることもあるので、アクセスエラーが生じる。
あくまで未定義だから出来ちゃうこともあるし、コンパイラオプションで制御できたりもするけど、基本的にはあかんやつ。
上は変数 pc はリテラル文字列の先頭を指すポインタ。
下の変数 ac は配列で、それを文字列 "abc" で初期化するって意味。
リテラルの破壊は未定義。
破壊しないことをあてにして破壊不可能なセクション (メモリ領域) に配置されたりすることもあるので、アクセスエラーが生じる。
あくまで未定義だから出来ちゃうこともあるし、コンパイラオプションで制御できたりもするけど、基本的にはあかんやつ。
461デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 10:30:06.22ID:ylRgY7un0462デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 10:35:31.71ID:ukyKg6LAa463デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 11:10:02.03ID:ukyKg6LAa すみません、また、ベーシックな質問です。
char* pc1 = 1; → エラー
char* pc2 = NULL; → OK
char* pc3 = 0; → OK
なぜ、2番目と3番目はOKなのでしょうか?
char* pc1 = 1;
がエラーになるのは、 int 型の値で char* 型の変数を初期化できないからだとすれば、
char* pc3 = 0;
もエラーになると考えることもできると思います。
char* pc1 = 1; → エラー
char* pc2 = NULL; → OK
char* pc3 = 0; → OK
なぜ、2番目と3番目はOKなのでしょうか?
char* pc1 = 1;
がエラーになるのは、 int 型の値で char* 型の変数を初期化できないからだとすれば、
char* pc3 = 0;
もエラーになると考えることもできると思います。
464はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 11:10:26.68ID:TWOfgg7C0 >>462
Python なんか知らんがな。
Python の immutable は Python の immutable であって、それが C++ の何物かであったりはしないよ。
C++ のリテラルを破壊した結果は未定義というのは C++ のリテラルを破壊した結果は未定義という規則であるだけ。
似て感じられたとしても一対一に対応付くような単純なものではないので、
背景にあるメカニズムを理解せずに翻訳して理解しようとするような方法はお勧めできない。
Python なんか知らんがな。
Python の immutable は Python の immutable であって、それが C++ の何物かであったりはしないよ。
C++ のリテラルを破壊した結果は未定義というのは C++ のリテラルを破壊した結果は未定義という規則であるだけ。
似て感じられたとしても一対一に対応付くような単純なものではないので、
背景にあるメカニズムを理解せずに翻訳して理解しようとするような方法はお勧めできない。
465デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 11:14:31.86ID:ukyKg6LAa466はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 11:22:08.82ID:TWOfgg7C0 >>465
書き忘れてたけど、 C++ の文字列リテラルの型は const char[] なので、
const 付きでないポインタに渡すと単純に型が合わなくてエラーになるはず。
C だと型に const が付いてないのに破壊するのは未定義ってことになっててあまりにもクソだったから改められた。
書き忘れてたけど、 C++ の文字列リテラルの型は const char[] なので、
const 付きでないポインタに渡すと単純に型が合わなくてエラーになるはず。
C だと型に const が付いてないのに破壊するのは未定義ってことになっててあまりにもクソだったから改められた。
467はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 11:32:07.41ID:TWOfgg7C0 >>463
0 はポインタに型変換可能で、型変換した結果が空ポインタと等しいことが保証されてる特別な存在。
(ビットパターンが等しいとは限らないことには注意が必要。)
互換であることが保証されているので、処理系によっては
#define NULL 0
として定義していることもある。
余談だが、これはオーバーロードされた関数でうっかりしやすいので気を付けた方がいい。
たとえば関数 foo が以下のような型でオーバーロードされている場合、
void foo(int);
void foo(int*);
これを
foo(NULL)
と呼び出すと void foo(int) が呼び出されたりする。
今ではヌルポインタを表すキーワード nullptr が用意されたので、
NULL はあまり使わない方が良い。
0 はポインタに型変換可能で、型変換した結果が空ポインタと等しいことが保証されてる特別な存在。
(ビットパターンが等しいとは限らないことには注意が必要。)
互換であることが保証されているので、処理系によっては
#define NULL 0
として定義していることもある。
余談だが、これはオーバーロードされた関数でうっかりしやすいので気を付けた方がいい。
たとえば関数 foo が以下のような型でオーバーロードされている場合、
void foo(int);
void foo(int*);
これを
foo(NULL)
と呼び出すと void foo(int) が呼び出されたりする。
今ではヌルポインタを表すキーワード nullptr が用意されたので、
NULL はあまり使わない方が良い。
468デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 12:03:25.28ID:ukyKg6LAa469デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 12:29:38.25ID:ylRgY7un0 >>468
それはISO/IEC14882:1998の4.2で許されていたことに由来する
その後ISO/IEC14882:2011のC.1.1で廃止されたが
古いソースを通すために故意に違反状態のままにしている
それはISO/IEC14882:1998の4.2で許されていたことに由来する
その後ISO/IEC14882:2011のC.1.1で廃止されたが
古いソースを通すために故意に違反状態のままにしている
470デフォルトの名無しさん (アウアウカー Sabb-5mf3)
2018/03/07(水) 16:15:14.65ID:nnB4Kxzea c++の規約に違反にしないためには一度変数に代入する必要があるという事?
471はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 16:24:01.54ID:TWOfgg7C0 オプションで指定できるんじゃね?
俺は GCC を使ってるから知らんけど。
俺は GCC を使ってるから知らんけど。
472デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 16:29:51.37ID:ylRgY7un0 違う
char const* cc;
cc = "abc"; //完全に合法
char* pc;
pc = cc; //不適格
pc = "abc"; //CとC++98では非推奨、C++11以後では不適格
pc = &"abc"[0]; //左辺値変形でこう解釈されていて
非constへのポインタに、constへのポインタを代入することになり、
暗黙のconst外しにあたるので、C++11が正論
pc = const_cast<char*>("abc"); //C++11以後ではこう書く
char const* cc;
cc = "abc"; //完全に合法
char* pc;
pc = cc; //不適格
pc = "abc"; //CとC++98では非推奨、C++11以後では不適格
pc = &"abc"[0]; //左辺値変形でこう解釈されていて
非constへのポインタに、constへのポインタを代入することになり、
暗黙のconst外しにあたるので、C++11が正論
pc = const_cast<char*>("abc"); //C++11以後ではこう書く
473デフォルトの名無しさん
2018/03/07(水) 17:54:06.02474デフォルトの名無しさん (ワッチョイ df80-zeCZ)
2018/03/07(水) 18:18:25.20ID:TnxtYBSc0475はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 18:49:53.33ID:TWOfgg7C0476デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 20:52:49.95ID:ylRgY7un0477デフォルトの名無しさん (スップ Sdff-WWZl)
2018/03/07(水) 22:07:54.67ID:eXkgxxlqd 純粋仮想関数と関連付けてはいないだろう
それはともかくとして
char * p = 7-7; // no error
class T {
virtual void f() = 7-7; // error
};
となる気がするので言ってることは合ってるか
それはともかくとして
char * p = 7-7; // no error
class T {
virtual void f() = 7-7; // error
};
となる気がするので言ってることは合ってるか
478デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/07(水) 22:10:57.06ID:NKcGF/Sn0 C言語でNULLが0をdefineしたものだったというだけだろ
479デフォルトの名無しさん (スップ Sdff-WWZl)
2018/03/07(水) 22:12:59.22ID:eXkgxxlqd C言語では ((void*)0) だった気がする
480デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 22:34:03.79ID:ylRgY7un0481デフォルトの名無しさん (スップ Sdff-WWZl)
2018/03/07(水) 22:41:42.97ID:eXkgxxlqd いや疑問も呈していないし否定しているわけでもないのに当然と言われてもな…
482デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 22:52:11.20ID:ylRgY7un0 じゃあ何のために、7-7とか言い出したんだ?
483はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 23:02:40.75ID:TWOfgg7C0484はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 23:12:03.15ID:TWOfgg7C0 >>483
と、思って調べてたんだけど、 C++ だと確実にあかんようだけど C だとアリなのかもしれない。
と、思って調べてたんだけど、 C++ だと確実にあかんようだけど C だとアリなのかもしれない。
485デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/07(水) 23:58:27.20ID:/Jrz1mw60 offsetof()がどう実装されているかやね
486デフォルトの名無しさん (ワッチョイ 6a33-hn8E)
2018/03/08(木) 02:18:11.16ID:BQ11IIJi0487はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 666f-uQtz)
2018/03/08(木) 03:31:21.90ID:+04GXVK30 おっ、こんな基本的なことで変更が入ってたのか。
でも当然といえば当然の処置よな。
でも当然といえば当然の処置よな。
488デフォルトの名無しさん (ワッチョイ e6e7-frl3)
2018/03/08(木) 06:41:46.04ID:DSeYC6Qd0 Cの無意味な汚いゴミが掃除されるのは良いことだ
489デフォルトの名無しさん (ワッチョイ 7f23-6rgV)
2018/03/08(木) 07:33:41.79ID:dmEui5aT0490デフォルトの名無しさん (ワッチョイ 2a8f-HFNi)
2018/03/08(木) 18:35:02.35ID:uuOHCrug0 C++の勉強+機械学習も勉強しようとVisual Studio 2017でtiny-dnnを用いたいのですが、tiny-dnn内でコンパイルエラーが発生します。
具体的にはxcontainer.hpp内でC3203というエラーが頻発したり、feedfoward_layer.hppではC2760というエラーが発生したりしています。
環境はWindows 7でVisual Studio 2017 communityです。
プロジェクトはwindowsデスクトップアプリケーションを用いています。
tiny-dnnのインクルードはプロパティのインクルードディレクトリに追加しています。
どなたか心当たりのある方がいらっしゃれば教えていただけると嬉しいです。
具体的にはxcontainer.hpp内でC3203というエラーが頻発したり、feedfoward_layer.hppではC2760というエラーが発生したりしています。
環境はWindows 7でVisual Studio 2017 communityです。
プロジェクトはwindowsデスクトップアプリケーションを用いています。
tiny-dnnのインクルードはプロパティのインクルードディレクトリに追加しています。
どなたか心当たりのある方がいらっしゃれば教えていただけると嬉しいです。
491デフォルトの名無しさん (スプッッ Sd2a-dsCQ)
2018/03/08(木) 19:27:19.96ID:i2S5Knpdd linux windows両対応のコードを考えている最中の質問です
unsigned int型の変数xの32bitに、char型の配列y[4]の8bit×4を当て込みたいです
y[0]から順にxの先頭ビットに入れたいのだけど
そういう時はどのようなコードになるのでしょうか
符号の問題で単純に24bitシフト+16bitシフト...みたいなことをすると期待の値にならないときが存在してます
unsigned int型の変数xの32bitに、char型の配列y[4]の8bit×4を当て込みたいです
y[0]から順にxの先頭ビットに入れたいのだけど
そういう時はどのようなコードになるのでしょうか
符号の問題で単純に24bitシフト+16bitシフト...みたいなことをすると期待の値にならないときが存在してます
492デフォルトの名無しさん (アウアウカー Sa7b-ccCq)
2018/03/08(木) 19:50:56.79ID:2k5PL6f/a unionでどう?
493デフォルトの名無しさん (スッップ Sd8a-6rgV)
2018/03/08(木) 20:26:39.82ID:FhiFltVyd >>491
シフトする前にunsigned charにキャストする
シフトする前にunsigned charにキャストする
494デフォルトの名無しさん (スッップ Sd8a-6rgV)
2018/03/08(木) 20:29:17.36ID:FhiFltVyd496デフォルトの名無しさん (ワッチョイ caaf-+ocK)
2018/03/09(金) 11:50:12.37ID:XHk1xHdH0 ヘッダーファイルの関数定義から関数ポインタをtypedefする事は可能ですか?
C++98辺りのコンパイラです。
C++98辺りのコンパイラです。
497はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 666f-uQtz)
2018/03/09(金) 12:25:38.00ID:nl8HCt1x0498デフォルトの名無しさん (スップ Sd2a-O8QP)
2018/03/09(金) 12:57:58.47ID:zqzgOSq4d テンプレート使えないかな?
499デフォルトの名無しさん (ワッチョイ caaf-J0+d)
2018/03/09(金) 13:06:17.52ID:XHk1xHdH0 出来ませんか。ありがとう。
再定義が面倒だったので楽したいだけだったんですけどね。
再定義が面倒だったので楽したいだけだったんですけどね。
500はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 666f-uQtz)
2018/03/09(金) 13:35:32.12ID:nl8HCt1x0 >>498
その手があったか。
でも C++98 で自動で推論させようとするとヘルパー関数を使う必要があるじゃろ。
意味のないオブジェクト生成 (最適化で消えるかもしれんけど) がださい感じはするよね。
その手があったか。
でも C++98 で自動で推論させようとするとヘルパー関数を使う必要があるじゃろ。
意味のないオブジェクト生成 (最適化で消えるかもしれんけど) がださい感じはするよね。
501デフォルトの名無しさん (ドコグロ MM8a-3fsH)
2018/03/09(金) 19:06:34.98ID:CekgNpjOM502デフォルトの名無しさん
2018/03/09(金) 22:17:46.30 >>496
マクロ駆使すれば
TYPEDEF_FUNC_DECL(なんちゃら);
FUNC_DEF(かんちゃら)
{
return;
}
みたいな書き方できないのかな?
なんちゃらは識別名と戻り値と引数
かんちゃらは識別名を指定するイメージ
マクロ駆使すれば
TYPEDEF_FUNC_DECL(なんちゃら);
FUNC_DEF(かんちゃら)
{
return;
}
みたいな書き方できないのかな?
なんちゃらは識別名と戻り値と引数
かんちゃらは識別名を指定するイメージ
503デフォルトの名無しさん (ワッチョイ 0b9f-uQtz)
2018/03/09(金) 23:46:50.00ID:yn7GHiyb0504デフォルトの名無しさん (ワッチョイ 4abd-RZSe)
2018/03/09(金) 23:57:54.33ID:5+PoAx/E0 >>491
xの先頭ビットとはMSBなのかLSBなのか
xの先頭ビットとはMSBなのかLSBなのか
505デフォルトの名無しさん (スップ Sd2a-6rgV)
2018/03/10(土) 00:45:01.61ID:8ENKFfsbd メモリ上でのレイアウトとかもあるのでuint8_t経由でのシフトがいい
クロックが(メモリアクセスが問題にならない程)低くてシフトが遅いマイクロプロセッサは別
クロックが(メモリアクセスが問題にならない程)低くてシフトが遅いマイクロプロセッサは別
506デフォルトの名無しさん
2018/03/10(土) 04:49:25.72507デフォルトの名無しさん (ワッチョイ 6a34-e70/)
2018/03/10(土) 06:32:30.15ID:Tg3hDFxK0 >>491
先頭ビットって32ビット目のことか?
先頭ビットって32ビット目のことか?
508デフォルトの名無しさん (ワッチョイ 0b9f-RK0z)
2018/03/10(土) 17:21:32.19ID:a2p+alti0 >>506
それが必要になるかどうかは場合による。
それが必要になるかどうかは場合による。
510デフォルトの名無しさん
2018/03/10(土) 19:22:25.29 >unsigned int型の変数xの32bitに、char型の配列y[4]の8bit×4を当て込みたいです
>y[0]から順に
っていう要件だから、ホストバイトオーダーがビッグエンディアンかリトルエンディアンか分からない以上は常にntohlを付けるべき
>y[0]から順に
っていう要件だから、ホストバイトオーダーがビッグエンディアンかリトルエンディアンか分からない以上は常にntohlを付けるべき
511デフォルトの名無しさん
2018/03/10(土) 19:24:15.74 char y[4] = { 0x12, 0x34, 0x56, 0x78 };
unsignd in x = 0x12345678;
これを等価にしたいという意味だろうから。
unsignd in x = 0x12345678;
これを等価にしたいという意味だろうから。
512デフォルトの名無しさん (ワッチョイ fb93-Ni5c)
2018/03/10(土) 21:52:35.38ID:My21AM/A0 独習c++終わりそうなんだが次によむべき本とかある?
>>512
https://mevius.5ch.net/test/read.cgi/tech/1493844476/312
あと STL の教科書、これもC++11以前のもの
https://www.amazon.co.jp/dp/4881357786/
https://mevius.5ch.net/test/read.cgi/tech/1493844476/312
あと STL の教科書、これもC++11以前のもの
https://www.amazon.co.jp/dp/4881357786/
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【テレビ】粗品「THE W」バッサリ「おもんない、レベル低い」審査員就任で「日テレが“血の海”に…」 [湛然★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 助けてくれ!!いま電車だがウンコ漏れそう!!!!
- 【悲報】維新の政治資金でガールズバー、高市首相「良いか悪いかは国民の皆さまが判断されること」 [115996789]
- お前ら「冬のボーナス」なんぼだった?
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【朗報】井端監督、侍ジャパンで岡本村上の一塁三塁構想を発表WWWWWWWWWWWWWWWWWWWWWWW
- 【悲報】女性「スタバで癒やされに来たのに、小汚いおっさんがいたあ!!😭」 [769050516]
