エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
前スレ
【初心者歓迎】C/C++室 Ver.99【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1469177649/
探検
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/11/06(日) 22:58:02.60ID:dU5z27As
268デフォルトの名無しさん
2017/01/24(火) 13:20:58.13ID:qjTW56fl msys2
269デフォルトの名無しさん
2017/01/24(火) 13:39:24.94ID:ZplzBBh2 msysって、どういうものですか?
270デフォルトの名無しさん
2017/01/24(火) 13:58:35.63ID:qjTW56fl >>269
コンパイラツールチェインとターミナルとライブラリ管理のパッケージツールを纏めたものです
エディタは無いし ビルドツールはautotoolsとかcmakeとかを使います
ただ単体ファイルをコンパイルして実行するだけなら
gccを叩くだけなので ご要望に沿うかと
コンパイラツールチェインとターミナルとライブラリ管理のパッケージツールを纏めたものです
エディタは無いし ビルドツールはautotoolsとかcmakeとかを使います
ただ単体ファイルをコンパイルして実行するだけなら
gccを叩くだけなので ご要望に沿うかと
271デフォルトの名無しさん
2017/01/24(火) 14:14:08.29ID:tjYeiy24 重いのがイヤなら code::blocks はどうかね
http://demura.net/lecture/12713.html
http://demura.net/lecture/12713.html
272デフォルトの名無しさん
2017/01/24(火) 20:33:35.20ID:bAAm8CCs >>267
自分もvisual studio が重いのと好きなエディタ使いたいのと、
でもGUIでファイル管理とかコンパイルエラー行へのジャンプをしたかったの自分でそういうツールを作った。TTVC Developer っていうのだけど
ネット上に公開してるけど反応無いので本当に良くできてるかどうかは
わからんが、自分的には便利だとは思ってる
自分もvisual studio が重いのと好きなエディタ使いたいのと、
でもGUIでファイル管理とかコンパイルエラー行へのジャンプをしたかったの自分でそういうツールを作った。TTVC Developer っていうのだけど
ネット上に公開してるけど反応無いので本当に良くできてるかどうかは
わからんが、自分的には便利だとは思ってる
273デフォルトの名無しさん
2017/01/24(火) 20:39:04.14ID:2gaKjsEX 俺はqt creator使ってるな
VSよりマシってくらいだが
VSよりマシってくらいだが
274デフォルトの名無しさん
2017/01/24(火) 20:46:07.50ID:HHZbO6eg275デフォルトの名無しさん
2017/01/24(火) 21:22:57.39ID:nvNd8iP1 Bash on Ubuntu on Windws
276デフォルトの名無しさん
2017/01/24(火) 21:41:00.44ID:1ohBhH6C あれβとれたっけ?
277デフォルトの名無しさん
2017/01/27(金) 01:10:08.67ID:c6wkRwWW *p++ って 参照してからインクリメントですよね。
某書に*(p++)と等価って書いてあったけど。
ん 同じか
某書に*(p++)と等価って書いてあったけど。
ん 同じか
278デフォルトの名無しさん
2017/01/27(金) 01:47:57.39ID:JFq0FevS 同じだよ
その括弧かあってもなくても実際にインクリメントがされるタイミングには影響しない
その括弧かあってもなくても実際にインクリメントがされるタイミングには影響しない
279デフォルトの名無しさん
2017/01/27(金) 02:43:45.51ID:c6wkRwWW すまん 評価してからインクリメントは同じだもんね。
280デフォルトの名無しさん
2017/01/28(土) 22:24:20.92ID:fbuNIeJW281デフォルトの名無しさん
2017/01/29(日) 14:28:58.62ID:XKehhdE4 質問です。
VisualStudio2015でReleaseビルドをしていたところ、生成されたEXEに気になる点がありました
if(false){
printf("hogehoge");
}
という処理を書いたところ、このprintfは到達不可能なのに、EXEの中に"hogehoge"という文字列が含まれていたのです。
※再現コードなのでhogehoeをprintしてなんの意味があるのかというコードですが
到達不能なのが明らかな部分は最適化で削除されるものだと思っていたのですが、何かしらの私の不手際でしょうか?
最適化は /O2オプションです
VisualStudio2015でReleaseビルドをしていたところ、生成されたEXEに気になる点がありました
if(false){
printf("hogehoge");
}
という処理を書いたところ、このprintfは到達不可能なのに、EXEの中に"hogehoge"という文字列が含まれていたのです。
※再現コードなのでhogehoeをprintしてなんの意味があるのかというコードですが
到達不能なのが明らかな部分は最適化で削除されるものだと思っていたのですが、何かしらの私の不手際でしょうか?
最適化は /O2オプションです
282デフォルトの名無しさん
2017/01/29(日) 15:19:11.63ID:DfD+S+Qh >>281
/O4とかは?
/O4とかは?
283デフォルトの名無しさん
2017/01/29(日) 15:31:20.39ID:2ZaFXkbr オプションによる不確定なものをどうして不手際と思ったのか謎
/O2 /GF-なら残る可能性高いし
/O2 /GF-なら残る可能性高いし
284デフォルトの名無しさん
2017/01/29(日) 17:04:30.90ID:XKehhdE4285デフォルトの名無しさん
2017/01/29(日) 18:59:23.49ID:K+/fnyLa 何かの理由があって残してるという事はないのかな・・・
286デフォルトの名無しさん
2017/01/29(日) 19:49:35.57ID:6wGEJq5M >>281
普通に削除されて文字列もなくなるけど?
普通に削除されて文字列もなくなるけど?
287デフォルトの名無しさん
2017/01/29(日) 23:12:58.08ID:XKehhdE4 >>285-286
ご返答ありがとうございます。
どうも文字列をあれこれ変えて、消えたり消えなかったりとよくわからない状況になってきました。
とりあえず、VS2015での最小コードを作れましたので貼り付けます
int main()
{
char text[] = "foofoo";
printf("hogehoge");
if (false) { printf(text); }
return 0;
}
こうすると以下の挙動になります。
このまま: exeにhogehoge, foofooの両方が含まれているのを確認できる
printf("hogehoge");を削除: hogehoge, foofooの両方がEXEから消える
※単に0を返すだけの結果固定関数になるため、変数の割り当てすらしなくなるから?
ご返答ありがとうございます。
どうも文字列をあれこれ変えて、消えたり消えなかったりとよくわからない状況になってきました。
とりあえず、VS2015での最小コードを作れましたので貼り付けます
int main()
{
char text[] = "foofoo";
printf("hogehoge");
if (false) { printf(text); }
return 0;
}
こうすると以下の挙動になります。
このまま: exeにhogehoge, foofooの両方が含まれているのを確認できる
printf("hogehoge");を削除: hogehoge, foofooの両方がEXEから消える
※単に0を返すだけの結果固定関数になるため、変数の割り当てすらしなくなるから?
288デフォルトの名無しさん
2017/01/29(日) 23:42:21.35ID:DuISdTe+ VS2015の環境を持っていないんで見当違いかも知れんが…。
#include <stdio.h> か #include <cstdio> を書いてみる。
char text[] = ... を const char text[] = ... にしてみる。
これらを(独立して)変えてみたら状態が変わらんかな?
printf()による副作用の可能性を考慮してtextを消さないのかも知れん。
もちろんprintf("hogehoge")を呼び出しても
引数になってないtextが読み書きされるはずはないんだけど。
#include <stdio.h> か #include <cstdio> を書いてみる。
char text[] = ... を const char text[] = ... にしてみる。
これらを(独立して)変えてみたら状態が変わらんかな?
printf()による副作用の可能性を考慮してtextを消さないのかも知れん。
もちろんprintf("hogehoge")を呼び出しても
引数になってないtextが読み書きされるはずはないんだけど。
289デフォルトの名無しさん
2017/01/30(月) 00:05:47.51ID:iVXSa+56 >>288
アドバイスありがとうございます
すいません。最小コードといいつつincludeをきちんと書いておりませんでした
#include <stdio.h>を最初に書いております
cstdioに変えてみて、各種パターンやってみましたが、変化は見られませんでした
次に、以下です
const char ではfoofooは消えませんでした
const static char に変えたところ、消えました
printfが、中でスタック消費量でも利用しているのかな…と馬鹿なことを考えて
char text〜をグローバル空間に出してみましたが、foofooは消えずです
アドバイスありがとうございます
すいません。最小コードといいつつincludeをきちんと書いておりませんでした
#include <stdio.h>を最初に書いております
cstdioに変えてみて、各種パターンやってみましたが、変化は見られませんでした
次に、以下です
const char ではfoofooは消えませんでした
const static char に変えたところ、消えました
printfが、中でスタック消費量でも利用しているのかな…と馬鹿なことを考えて
char text〜をグローバル空間に出してみましたが、foofooは消えずです
290デフォルトの名無しさん
2017/01/30(月) 13:26:01.87ID:NFw8h2uH >>289
グローバル変数にするのは最適化されにくくなるだけ。
とりあえずこれで
#include <stdio.h>
int main(){
printf("hogehoge");
if(false){
printf("foofoo");
}
return 0;
}
データセグメントが消えるかどうかは最適化の
目的じゃないと思うが、"foofoo"が残るか見てみると
VS2015
cl /Ox /Fa hoge.cpp きえない
cl /O1 /Fa hoge.cpp きえた
cl /O2 /Fa hoge.cpp きえた
GCC-3.4.5
gcc -S hoge.cpp きえた
まあ所詮VC
グローバル変数にするのは最適化されにくくなるだけ。
とりあえずこれで
#include <stdio.h>
int main(){
printf("hogehoge");
if(false){
printf("foofoo");
}
return 0;
}
データセグメントが消えるかどうかは最適化の
目的じゃないと思うが、"foofoo"が残るか見てみると
VS2015
cl /Ox /Fa hoge.cpp きえない
cl /O1 /Fa hoge.cpp きえた
cl /O2 /Fa hoge.cpp きえた
GCC-3.4.5
gcc -S hoge.cpp きえた
まあ所詮VC
291デフォルトの名無しさん
2017/01/30(月) 17:50:38.46ID:X+M9ocjS つまり>>281は嘘つきってこと?
292デフォルトの名無しさん
2017/01/30(月) 19:47:42.18ID:p0U51Ig/ exeの中身まで気が回りませんわ
293デフォルトの名無しさん
2017/01/30(月) 22:08:56.31ID:mpXbeHjF exeにビルド時のフルパスが埋め込まれてるとイラっとする
294デフォルトの名無しさん
2017/01/30(月) 22:20:13.70ID:XMGcU10o デバッグビルドなら普通でしょ
295デフォルトの名無しさん
2017/01/31(火) 02:46:33.99ID:SZ8YrWi+ リリースビルドにして、最適化オプションを指定すれば?
296デフォルトの名無しさん
2017/01/31(火) 09:17:11.64ID:r8Cb1+5o デバッグ情報を含めなければいいだけだしな
297デフォルトの名無しさん
2017/02/01(水) 01:15:31.17ID:lC8eLy+G あるクラスに引数で渡されるオブジェクトのconstではない参照を持ちたいんですけどどのようにやればいいでしょうか
ポインタはなるべく使いたくないのですが
class A {
public:
void setParam(Param&);
private:
Param& m_param;
}
状況としては
あるクラスBがクラスAみたいなParamの参照を持つクラスを複数持っていて
クラスBがvector<Param>でParamの実体を持っているという感じです
ポインタはなるべく使いたくないのですが
class A {
public:
void setParam(Param&);
private:
Param& m_param;
}
状況としては
あるクラスBがクラスAみたいなParamの参照を持つクラスを複数持っていて
クラスBがvector<Param>でParamの実体を持っているという感じです
298デフォルトの名無しさん
2017/02/01(水) 01:25:10.63ID:V+KME3Sb ライフタイムと循環参照のもたらす悪夢を
全部避けられるように熟考しながら
shared_ptr / weak_ptr をどうぞ
Welcome to C++ nightmare!!
全部避けられるように熟考しながら
shared_ptr / weak_ptr をどうぞ
Welcome to C++ nightmare!!
299デフォルトの名無しさん
2017/02/01(水) 01:36:32.13ID:nwC60mRJ shared_ptrの何が難しいのか判らん。
shared_ptr程度で悪夢とか言ってたらswiftも使えなくない?
shared_ptr程度で悪夢とか言ってたらswiftも使えなくない?
300デフォルトの名無しさん
2017/02/01(水) 02:15:37.65ID:V+KME3Sb まぁ良く調べて使ってねってのを脅し効かせた程度です
他の言語で参照カウント型のsmart_ptr解ってるなら 確かに大丈夫
他の言語で参照カウント型のsmart_ptr解ってるなら 確かに大丈夫
301デフォルトの名無しさん
2017/02/01(水) 12:17:29.74ID:RxSebrTI Windows10でBluetoothを使ったCOM通信を行いたく、
プログラムのほうはCOMポート通信のつもりで書き、
OSの設定でBluetoothに仮想COMポートを追加しました。
Androidとは問題なく接続・通信できたのですが、
Windows10同士ではうまくいきませんでした。
これは仮想COMポート作成するときに、どちらのPCも「受信」(相手側が接続を開始する)にしていたからだと思い、
片方を「送信」に変更しようとしました。
しかし、この場合は接続先PCを指定しなくてはならないのですが
対象PCが選択リスト内に出てこなくて作成することができません。
ペアリングはできているにもかかわらずです。
どうすればWin10PC同士でBluetoothを介したCOMポート接続・通信ができるでしょうか?
プログラムのほうはCOMポート通信のつもりで書き、
OSの設定でBluetoothに仮想COMポートを追加しました。
Androidとは問題なく接続・通信できたのですが、
Windows10同士ではうまくいきませんでした。
これは仮想COMポート作成するときに、どちらのPCも「受信」(相手側が接続を開始する)にしていたからだと思い、
片方を「送信」に変更しようとしました。
しかし、この場合は接続先PCを指定しなくてはならないのですが
対象PCが選択リスト内に出てこなくて作成することができません。
ペアリングはできているにもかかわらずです。
どうすればWin10PC同士でBluetoothを介したCOMポート接続・通信ができるでしょうか?
302デフォルトの名無しさん
2017/02/01(水) 12:30:13.62ID:HL/HxBhd 直接の解はわからないけど、ぐぐって見つかったので確認
ポート開くとき "\\\\.\\COM○○" (○は数字 \はエスケープ込み)
って開いてる?
ポート番号が1桁の場合に限り "COM○"でも開けるらしいけど、
そのコードの延長で 2桁渡すとそれは開けないから
ポート開くとき "\\\\.\\COM○○" (○は数字 \はエスケープ込み)
って開いてる?
ポート番号が1桁の場合に限り "COM○"でも開けるらしいけど、
そのコードの延長で 2桁渡すとそれは開けないから
303301
2017/02/01(水) 12:49:42.61ID:RxSebrTI >>302
あ、はい。それはやってます。
今、わかったのですが、
一旦ペアリングを解除して、改めて「送信」COMポートを追加しようとすると、
先程までペアリングしていた対象PCが選択できるようになりました。
しかし今度は「選択されたデバイスでシリアルポートサービスが実行されていません。」と出て作成されません。
相手側に「受信」のCOMポートは作成済みなのですが…。
あ、はい。それはやってます。
今、わかったのですが、
一旦ペアリングを解除して、改めて「送信」COMポートを追加しようとすると、
先程までペアリングしていた対象PCが選択できるようになりました。
しかし今度は「選択されたデバイスでシリアルポートサービスが実行されていません。」と出て作成されません。
相手側に「受信」のCOMポートは作成済みなのですが…。
304デフォルトの名無しさん
2017/02/01(水) 13:25:07.55ID:HL/HxBhd ttp://kokufu.blogspot.jp/2014/02/windows-bluetooth-spp-server.html
これとかの雰囲気だと
「受信」で作った側のPCのソフトを先に立ち上げて接続待ちにして(SPPサーバー)
「送信」で作った側のPCを後追いで接続 かなぁ
力になれなくてすまん
これとかの雰囲気だと
「受信」で作った側のPCのソフトを先に立ち上げて接続待ちにして(SPPサーバー)
「送信」で作った側のPCを後追いで接続 かなぁ
力になれなくてすまん
305301
2017/02/01(水) 14:06:25.03ID:RxSebrTI >>304
いえいえ!
色々と調べていただいて参考になりました。
どうもシリアル接続サービスをサポートしていないようです。
今回の条件ではあまり好ましくないのですが、
WiFiを使ったソケット通信で妥協することにします。
ありがとうございました。
いえいえ!
色々と調べていただいて参考になりました。
どうもシリアル接続サービスをサポートしていないようです。
今回の条件ではあまり好ましくないのですが、
WiFiを使ったソケット通信で妥協することにします。
ありがとうございました。
306デフォルトの名無しさん
2017/02/01(水) 14:21:22.91ID:+8V+I8xy307デフォルトの名無しさん
2017/02/01(水) 20:39:39.90ID:3j6uP7e4 >>297
参照をメンバで持ちたい時は、コンストラクタでの初期化以外は無理。
class A {
public:
A(Param& x):m_param(x){}
private:
Param& m_param;
};
参照をメンバで持ちたい時は、コンストラクタでの初期化以外は無理。
class A {
public:
A(Param& x):m_param(x){}
private:
Param& m_param;
};
308デフォルトの名無しさん
2017/02/02(木) 01:04:42.40ID:CAgg+EtY shared_ptr,weak_ptrのことで質問なのですが
自クラス2つを引数に取る+演算子をオーバーロードしているクラスMatrixを使って
func(std::weak_ptr<Matrix> m1, std::weak_ptr<Matrix> m2){
mat = m1 * m2;
…
}
みたいにやりたいんですが、オペランドに一致する演算子がないと言われます
shared_ptr,weak_ptrに入れた場合どのようにしてオーバーロードされた演算子を利用できますか?
自クラス2つを引数に取る+演算子をオーバーロードしているクラスMatrixを使って
func(std::weak_ptr<Matrix> m1, std::weak_ptr<Matrix> m2){
mat = m1 * m2;
…
}
みたいにやりたいんですが、オペランドに一致する演算子がないと言われます
shared_ptr,weak_ptrに入れた場合どのようにしてオーバーロードされた演算子を利用できますか?
309デフォルトの名無しさん
2017/02/02(木) 01:27:35.78ID:FXYEZ0RW310デフォルトの名無しさん
2017/02/02(木) 02:04:10.33ID:CAgg+EtY >>309
ありがとうございます
weak_ptrを使っている理由は
funcはあるクラスのメンバ関数で、引数で渡されたポインタの所有権をクラスが持たないこと示すためにweak_ptrを使っているのですが
weak_ptr::expired()な場合は想定していません
ありがとうございます
weak_ptrを使っている理由は
funcはあるクラスのメンバ関数で、引数で渡されたポインタの所有権をクラスが持たないこと示すためにweak_ptrを使っているのですが
weak_ptr::expired()な場合は想定していません
311デフォルトの名無しさん
2017/02/02(木) 02:21:14.81ID:ExAPXdhA312デフォルトの名無しさん
2017/02/02(木) 02:21:18.81ID:EB2HJN86 スマートポインタはポインタのように振る舞うものだから
*や->でポインタの指す値にしなければならないよ
*や->でポインタの指す値にしなければならないよ
313デフォルトの名無しさん
2017/02/02(木) 10:51:03.92ID:335RX4F5 VS2015で.objを.libに変換してリンクできなくて悩んでいます
そういうことはできないのでしょうか?
複数のC++ファイルをビルド→.objが複数できる
新しいEXEプロジェクト作る→main()を用意→そこの.vcxprojを編集して複数の.objをincludeする→ビルドで正常な.exeできる(exeサイズ10MB)
include方法は<Object Include="abc1.obj" /> <Object Include="abc2.obj" />・・・
新しいスタティックライブラリプロジェクト作る→そこの.vcxprojを編集して複数の.objをincludeする→ビルドで.libができる(libサイズ100MB)
→新しいEXEプロジェクト作る→main()を用意→追加のライブラリで.libをリンクする→ビルドで動かない.exeできる(exeサイズ1MB)
動かない.exeのビルド時はリンカーエラーなど出ません
exeサイズが期待しているよりも小さく、実行時に例外で強制終了します
そういうことはできないのでしょうか?
複数のC++ファイルをビルド→.objが複数できる
新しいEXEプロジェクト作る→main()を用意→そこの.vcxprojを編集して複数の.objをincludeする→ビルドで正常な.exeできる(exeサイズ10MB)
include方法は<Object Include="abc1.obj" /> <Object Include="abc2.obj" />・・・
新しいスタティックライブラリプロジェクト作る→そこの.vcxprojを編集して複数の.objをincludeする→ビルドで.libができる(libサイズ100MB)
→新しいEXEプロジェクト作る→main()を用意→追加のライブラリで.libをリンクする→ビルドで動かない.exeできる(exeサイズ1MB)
動かない.exeのビルド時はリンカーエラーなど出ません
exeサイズが期待しているよりも小さく、実行時に例外で強制終了します
314デフォルトの名無しさん
2017/02/02(木) 12:49:56.83ID:cH1kwi7M 例外を具体的に
315デフォルトの名無しさん
2017/02/02(木) 13:18:13.30ID:Nq0thOwX >>314
> ハンドルされない例外がスローされました:読み取りアクセス違反。
> xxxxx が nullptr でした。
xxxxxはポインタ変数
exeサイズが小さいからリンクできてるように見えてリンクできてないのかなとは思うけど
libの追加方法を#pragma comment(lib,"")にしてもうまくいかずでどうしたらいいものか
> ハンドルされない例外がスローされました:読み取りアクセス違反。
> xxxxx が nullptr でした。
xxxxxはポインタ変数
exeサイズが小さいからリンクできてるように見えてリンクできてないのかなとは思うけど
libの追加方法を#pragma comment(lib,"")にしてもうまくいかずでどうしたらいいものか
316デフォルトの名無しさん
2017/02/02(木) 18:40:08.32ID:qO0hDPsp317デフォルトの名無しさん
2017/02/02(木) 18:48:07.72ID:S7kpFPUA318デフォルトの名無しさん
2017/02/02(木) 19:11:39.98ID:Eu4e1EaI319デフォルトの名無しさん
2017/02/02(木) 19:16:04.83ID:WkIFQVuy320デフォルトの名無しさん
2017/02/02(木) 19:18:03.73ID:qhXDtbED .c, .cpp から .lib 作るプロジェクト -(A)
そいつをリンクしつつ、 .c, .cpp から実行ファイルを作るプロジェクト -(B)
(参照設定とか依存関係とかで (A) を使うぜ俺 って指定する)
そいつをリンクしつつ、 .c, .cpp から実行ファイルを作るプロジェクト -(B)
(参照設定とか依存関係とかで (A) を使うぜ俺 って指定する)
321デフォルトの名無しさん
2017/02/02(木) 19:38:57.55ID:WkIFQVuy こんな感じだろ
ソースからobj生成: VSプロジェクトでなくていい
VSプロジェクト
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからず)
3. 上のlibからexe作るVSプロジェクト (exeが例外でNG)
ソースからobj生成: VSプロジェクトでなくていい
VSプロジェクト
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからず)
3. 上のlibからexe作るVSプロジェクト (exeが例外でNG)
322デフォルトの名無しさん
2017/02/02(木) 19:51:53.25ID:Eu4e1EaI323デフォルトの名無しさん
2017/02/02(木) 20:22:53.95ID:k638XiO/ そこまで行ったらDLLに分けるだろう
324313
2017/02/03(金) 13:56:09.01ID:3xPmzf3n 4番をやってみましたが結果OKでした
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからないが、4がOKで作れてる可能性高い)
3. 2のlibからexe作るVSプロジェクト (exeが例外でNG)
4. 2のlibからobjを抽出して、そのobjからexe作るVSプロジェクト (結果OK)
作業の前提条件として下の2つは意味が同じと思っているのですが、違いがあるのでしょうか?
cppをコンパイルしてobjにし、objをリンクしてexeを作る
cppをコンパイルしてobjにし、objをlibに変換してからリンクしてexeを作る
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからないが、4がOKで作れてる可能性高い)
3. 2のlibからexe作るVSプロジェクト (exeが例外でNG)
4. 2のlibからobjを抽出して、そのobjからexe作るVSプロジェクト (結果OK)
作業の前提条件として下の2つは意味が同じと思っているのですが、違いがあるのでしょうか?
cppをコンパイルしてobjにし、objをリンクしてexeを作る
cppをコンパイルしてobjにし、objをlibに変換してからリンクしてexeを作る
325デフォルトの名無しさん
2017/02/03(金) 13:56:30.01ID:OeN1TpCU Ubuntu16.04,gcc5.4.0で,書籍を参考に下記のプログラムを
コンパイル(gcc program.c -lalut -s -o program)したところ,
「'nullptr' was not declared in this scope」というエラーになりました
何が間違っているのか教えてください
---program---
#include<AL/al.h>
#include<AL/alc.h>
int main() {
//OpenAlの初期化
//デバイスを開く
ALCdevice* device = alcOpenDevice(nullptr);
//コンテキストを生成
ALCcontext* context = alcCreateContext(device, nullptr);
//生成したコンテキストを操作対象にする
alcMakeContextCurrent(context);
//OpenALの後始末
//操作対象のコンテキストを解除
alcMakeContextCurrent(nullptr);
//コンテキストを破棄
alcDestroyContext(context);
//デバイスを閉じる
alcCloseDevice(device);
}
コンパイル(gcc program.c -lalut -s -o program)したところ,
「'nullptr' was not declared in this scope」というエラーになりました
何が間違っているのか教えてください
---program---
#include<AL/al.h>
#include<AL/alc.h>
int main() {
//OpenAlの初期化
//デバイスを開く
ALCdevice* device = alcOpenDevice(nullptr);
//コンテキストを生成
ALCcontext* context = alcCreateContext(device, nullptr);
//生成したコンテキストを操作対象にする
alcMakeContextCurrent(context);
//OpenALの後始末
//操作対象のコンテキストを解除
alcMakeContextCurrent(nullptr);
//コンテキストを破棄
alcDestroyContext(context);
//デバイスを閉じる
alcCloseDevice(device);
}
326デフォルトの名無しさん
2017/02/03(金) 14:06:26.05ID:S9UE3yae nullptrはC++11からの機能だからですね
"gcc" -> "g++ --std=c++11"を使ってください
元のコンパイルは-lalutを指定していますが
そのプログラムならOpenALだけで大丈夫なので 下記で通ります
ライブラリをpkg-configに探させてるだけです
g++ --std=c++11 program.c `pkg-config openal --libs` -o program
"gcc" -> "g++ --std=c++11"を使ってください
元のコンパイルは-lalutを指定していますが
そのプログラムならOpenALだけで大丈夫なので 下記で通ります
ライブラリをpkg-configに探させてるだけです
g++ --std=c++11 program.c `pkg-config openal --libs` -o program
327デフォルトの名無しさん
2017/02/03(金) 14:55:43.86ID:xVLuMTde328デフォルトの名無しさん
2017/02/03(金) 15:42:48.87ID:3xPmzf3n >>327
使ってるのも使ってないのもある
libの追加方法は二通り試したけどどちらもビルドエラーはでないけど実行時NG
どちらもlibの追加を省略すると外部シンボルが見つからないエラーでビルドが通らない
プロジェクトのプロパティの「追加の依存ファイル」から→実行時NG
ソースファイル中に「#pragma comment(lib,"")」から→実行時NG
使ってるのも使ってないのもある
libの追加方法は二通り試したけどどちらもビルドエラーはでないけど実行時NG
どちらもlibの追加を省略すると外部シンボルが見つからないエラーでビルドが通らない
プロジェクトのプロパティの「追加の依存ファイル」から→実行時NG
ソースファイル中に「#pragma comment(lib,"")」から→実行時NG
329デフォルトの名無しさん
2017/02/04(土) 00:14:20.36ID:z/XsYQOx 何もしていない普通の一般人の自宅に隠しカメラを取り付け
それをネットでリアルタイム配信
仲間という人間に対する盗聴盗撮生ネット配信の会
しかけたカメラの映像
乗っ取っているPCの画像をリアルタイムで生配信中
集団で仲間の私生活を覗いて楽しんでいる
そんなことが今この国では行われています
それをネットでリアルタイム配信
仲間という人間に対する盗聴盗撮生ネット配信の会
しかけたカメラの映像
乗っ取っているPCの画像をリアルタイムで生配信中
集団で仲間の私生活を覗いて楽しんでいる
そんなことが今この国では行われています
330デフォルトの名無しさん
2017/02/04(土) 05:54:43.47ID:/r5Uxr2+ libでリンク解決してもダイナミックリンクにしてれば実行時にパス内に見つからずにエラー
スタティックリンクにしないと
スタティックリンクにしないと
331デフォルトの名無しさん
2017/02/04(土) 09:51:58.52ID:GdM1I4zb 久々にプログラミングしようと思うんですけど
USBカメラがあるからそれを使って監視カメラにしたいんだが
ピクセルデータが取れればあとは簡単だと思うんだけど、その前に
この適当に昔買ったバッファローのUSBからデータ取り出す事って可能なんですか?
USBカメラがあるからそれを使って監視カメラにしたいんだが
ピクセルデータが取れればあとは簡単だと思うんだけど、その前に
この適当に昔買ったバッファローのUSBからデータ取り出す事って可能なんですか?
332デフォルトの名無しさん
2017/02/04(土) 10:24:35.81ID:94H9RTyk333デフォルトの名無しさん
2017/02/04(土) 10:55:19.44ID:GdM1I4zb >>332
ありがとうございますだ
ありがとうございますだ
334デフォルトの名無しさん
2017/02/04(土) 21:25:32.55ID:uqEM2LY/ int a = 0;
int *b = &(1+a);
これが出来ないのはなぜですか?
1+aの計算結果というのはメモリ上のどこかにあると思うんですが
int *b = &(1+a);
これが出来ないのはなぜですか?
1+aの計算結果というのはメモリ上のどこかにあると思うんですが
336デフォルトの名無しさん
2017/02/04(土) 21:31:18.24ID:3pCbKNVT &1 を許すとややこしいことになりそうだ
337デフォルトの名無しさん
2017/02/04(土) 21:38:25.89ID:wIflvrKT >>334
計算結果はレジスタに入っててメモリには入ってないんじゃない?
計算結果はレジスタに入っててメモリには入ってないんじゃない?
338デフォルトの名無しさん
2017/02/04(土) 21:52:37.41ID:uqEM2LY/339デフォルトの名無しさん
2017/02/05(日) 19:35:43.24ID:ktep0Dpi340デフォルトの名無しさん
2017/02/05(日) 22:43:20.73ID:F2ePDpTS >337
レジスタがメモリじゃないかのようなアホレスだな
レジスタがメモリじゃないかのようなアホレスだな
341デフォルトの名無しさん
2017/02/05(日) 23:03:58.60ID:wagcFIA6 レジスタのアドレスって・・・
342デフォルトの名無しさん
2017/02/06(月) 01:31:32.48ID:DI3VdQ+9 アドレスのないレジスタはCでアクセスできないからな
アセンブリでしてねになるからね
アセンブリでしてねになるからね
343デフォルトの名無しさん
2017/02/06(月) 03:41:00.32ID:oG8S/cPb って言うかレジスタ関係なくね?
右辺値に対してアドレス取ろうとしてるから駄目なわけで。
右辺値に対してアドレス取ろうとしてるから駄目なわけで。
344デフォルトの名無しさん
2017/02/06(月) 05:58:55.21ID:GvVdGH4O >>334 の質問に対して「右辺値」を出すのは大げさじゃないかな。
もちろん正しいんだけど、詳細に踏み込みすぎというか、
その話はもっと理解が深まってから、というか。
「過去に自分がこの疑問を持ったときに、どんな説明をされたら
すっきり腑に落ちて先に進めただろうか」と思い返しながら回答してるんだろう。
もちろん正しいんだけど、詳細に踏み込みすぎというか、
その話はもっと理解が深まってから、というか。
「過去に自分がこの疑問を持ったときに、どんな説明をされたら
すっきり腑に落ちて先に進めただろうか」と思い返しながら回答してるんだろう。
345デフォルトの名無しさん
2017/02/06(月) 08:21:18.53ID:87jFG7WV346デフォルトの名無しさん
2017/02/06(月) 08:58:46.99ID:L0zP1ki7 間違った説明で相手を納得させておいて開き直りとはこれいかに
347デフォルトの名無しさん
2017/02/06(月) 13:17:28.90ID:WLH8uv6+348デフォルトの名無しさん
2017/02/06(月) 20:21:28.41ID:VJg+IRhi349デフォルトの名無しさん
2017/02/06(月) 20:22:09.67ID:VJg+IRhi350デフォルトの名無しさん
2017/02/06(月) 20:58:58.36ID:oG8S/cPb >>344
でもさ、レジスタって言語と関係ないじゃん?
でもさ、レジスタって言語と関係ないじゃん?
351デフォルトの名無しさん
2017/02/06(月) 21:52:01.05ID:w07g0Jpo registerは予約語なのに無関係は無いわ
352デフォルトの名無しさん
2017/02/06(月) 22:13:36.15ID:rtwfNknd >registerは予約語なのに無関係は無いわ
規格のどこを読んだら「register」キーワードと「レジスター」との関連が読みとれるんだか
規格のどこを読んだら「register」キーワードと「レジスター」との関連が読みとれるんだか
353デフォルトの名無しさん
2017/02/06(月) 23:29:15.59ID:w07g0Jpo 規格厨には理解しろと言っても無理だ
354デフォルトの名無しさん
2017/02/06(月) 23:45:37.66ID:+fmEnPzx >int a = 0;
>int *b = &(1+a);
っていうのが今intになってるからレジスタがどうとか言えるけど
intじゃなくて自分で定義したクラスとかだったらどうなんだって話だな
レジスタだからアドレスが取れないっていう説明はアレすぎないかい?
そもそもレジスタだけで済ませるかどうかはコンパイラの自由ってのもあるし
>int *b = &(1+a);
っていうのが今intになってるからレジスタがどうとか言えるけど
intじゃなくて自分で定義したクラスとかだったらどうなんだって話だな
レジスタだからアドレスが取れないっていう説明はアレすぎないかい?
そもそもレジスタだけで済ませるかどうかはコンパイラの自由ってのもあるし
355デフォルトの名無しさん
2017/02/06(月) 23:48:30.59ID:tIYhS76V 一生懸命だなあw
356デフォルトの名無しさん
2017/02/07(火) 00:11:08.64ID:STnejiJM 俺が思うにさ
最適化でレジスタに配置されてメモリに実体が確保されない変数ってのは
普通にありふれているわけじゃないですか
で、それらの変数のアドレスを取得するように
コードを書き換えたら、コンパイルエラーになるんですか?ってね
その場合ちゃんとコンパイラはメモリに実体を作るような動作になる
だからレジスタ云々はオプティマイズの話であって本質的に全く関係ないだろうと
レジスタに配置されているからアドレス取得できませんって意味不明で
だったらメモリに実体を作ればいくらでもアドレス取得できるだろって話なんだよ
どちらかというとこれは変数の寿命の関係でそうなっているんだよ
最適化でレジスタに配置されてメモリに実体が確保されない変数ってのは
普通にありふれているわけじゃないですか
で、それらの変数のアドレスを取得するように
コードを書き換えたら、コンパイルエラーになるんですか?ってね
その場合ちゃんとコンパイラはメモリに実体を作るような動作になる
だからレジスタ云々はオプティマイズの話であって本質的に全く関係ないだろうと
レジスタに配置されているからアドレス取得できませんって意味不明で
だったらメモリに実体を作ればいくらでもアドレス取得できるだろって話なんだよ
どちらかというとこれは変数の寿命の関係でそうなっているんだよ
357デフォルトの名無しさん
2017/02/07(火) 00:12:13.25ID:vsDAW+dO 初心者向けの簡易な説明に外野がつまらない茶々入れて大騒ぎするなよ。
358デフォルトの名無しさん
2017/02/07(火) 00:25:30.14ID:pfKer2X+ >最適化でレジスタに配置されてメモリに実体が確保されない変数ってのは
>普通にありふれているわけじゃないですか
本当にありふれてるのか?
>普通にありふれているわけじゃないですか
本当にありふれてるのか?
359デフォルトの名無しさん
2017/02/07(火) 00:48:05.62ID:PI0qtNzz winsock(UDP)を使ったプログラムを作っています。
ほぼできたのですが、数100回繰り返すと徐々に通信が
遅くなっていきます。
通信するたびに、オープンとクローズを繰り返しているのですが、
その辺に原因がありそうでしょうか・・・。
ほぼできたのですが、数100回繰り返すと徐々に通信が
遅くなっていきます。
通信するたびに、オープンとクローズを繰り返しているのですが、
その辺に原因がありそうでしょうか・・・。
360デフォルトの名無しさん
2017/02/07(火) 02:25:04.93ID:e2fTv1VF メモリを解放していないから、使用メモリがドンドン大きくなっていくとか?
プロセスの使用メモリを、チェックすれば?
プロセスの使用メモリを、チェックすれば?
361デフォルトの名無しさん
2017/02/07(火) 07:22:03.04ID:ff698yUf362デフォルトの名無しさん
2017/02/07(火) 07:23:26.33ID:ff698yUf >>359
再現性あるならどこが遅くなってるかを調べたら?
再現性あるならどこが遅くなってるかを調べたら?
363デフォルトの名無しさん
2017/02/07(火) 07:43:41.13ID:AbeSLyAt >その自由さのために言語仕様でできないようにしてるだけでしょ
根拠は俺の「こうだったらいいな」
この理屈で行くとアドレスをとれる変数は
レジスタに乗せてはいけないことになるな
根拠は俺の「こうだったらいいな」
この理屈で行くとアドレスをとれる変数は
レジスタに乗せてはいけないことになるな
364デフォルトの名無しさん
2017/02/07(火) 11:15:58.10ID:bjgueVwS register云々してるやつはCかC++か区別して書け
365デフォルトの名無しさん
2017/02/07(火) 11:47:58.10ID:+LdvU0fQ class A
{
public:
int xxx;
void yyy();
};
class B : protected A ←protectedのままにしたい
{
public:
void yyy() { __super::yyy(); }
};
B bbb;
bbb.xxx = 0; ←アクセスできない
bbb.yyy(); ←使える
xxxをclassBの内部を変えることでアクセスできるようにする方法ない?
{
public:
int xxx;
void yyy();
};
class B : protected A ←protectedのままにしたい
{
public:
void yyy() { __super::yyy(); }
};
B bbb;
bbb.xxx = 0; ←アクセスできない
bbb.yyy(); ←使える
xxxをclassBの内部を変えることでアクセスできるようにする方法ない?
366デフォルトの名無しさん
2017/02/07(火) 11:52:35.77ID:Ex9Qk6T0 public:
using A::xxx;
using A::xxx;
367デフォルトの名無しさん
2017/02/07(火) 11:57:42.37ID:+LdvU0fQ >>366
おお!yyy()もそれでいけるね。サンクス
おお!yyy()もそれでいけるね。サンクス
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★10 [ぐれ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- トランプ氏「台湾侵攻すれば北京爆撃」“過激予告発言”報道がXで再燃「高市氏の1億倍やばい」 [七波羅探題★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 ★2 [おっさん友の会★]
- 【ペルソナ・ノン・グラータ】中国総領事の早期国外退去を首相に要請へ 自民・保守系グループ「日本の尊厳と国益を護(まも)る会」 [ぐれ★]
- 【(・(ェ)・)】収穫前のリンゴ2トン!丸々と太ったクマがリンゴ畑に連日現れ…一晩中居座る「こんなに食べられたのは初めて」長野・上田 [ぐれ★]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 安倍晋三「円が300円になったらトヨタ車が3分の1で売れる。日本への旅費も3分の1になる。そうすればあっという間に経済は回復していく」 [177178129]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
- 【悲報】日本、パンダ0にwwwwwwwwwwww高市さんありがとう🐼 [271912485]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
- 童貞が初セックスで驚きそうなこと書いてけwwwwwwwwwwww [244594861]
