- 1 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 23:15:45 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.70【環境依存OK】 pc12.2ch.net/test/read.cgi/tech/1258873470/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm codepad.org/ (コンパイルもできるし出力結果も得られるのでお勧め) ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。
- 628 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:05:12 ]
- お前それで良いのか
- 629 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:06:09 ]
- おっと>>628は>>626向け
- 630 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:06:37 ]
- >>586 codepad.org/eoOEH0RH
- 631 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:11:36 ]
- >>620
#include "boost/preprocessor/stringize.hpp" #define TEST 5 char const* a = BOOST_PP_STRINGIZE(TEST);
- 632 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:13:03 ]
- 手を抜くつもりが黒魔術になってしまった。
後悔はしてるが反省はしていない。 #include <stdio.h> #include <locale.h> #include <tchar.h> #include <windows.h> #define TEST 5 #define BufSize 1024 int main(){ TCHAR BUF[BufSize]; _tsetlocale(LC_ALL, TEXT("Japanese")); /*wsprintf(BUF,TEXT("ほげほげ戦隊 ほげほげ%d"),TEST);*/ _sntprintf_s(BUF,BufSize,TEXT("ほげほげファイブ「%d」"),TEST); _tprintf(TEXT("%s"),BUF); return 0; }
- 633 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:23:19 ]
- >>610
なんかうちの環境が悪いだけでしたあざす
- 634 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:29:21 ]
- >>630
これってstaticにする意味って何? あおりじゃなくてただの素人です
- 635 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:30:09 ]
- 俺は文字列リテラル外すマクロが欲しい
- 636 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:35:19 ]
- >>635
文字コードすべて暗記してint型の配列を確保してエンディアン考慮して 文字を16進数にでもして並べていけばリテラルいらないよ
- 637 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:40:11 ]
- >>634
static にしないと引数として this ポインタが付く。無駄な引数は付けないのが当たり前。
- 638 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:44:40 ]
- リテラル嫌なら
int a[2] = { 0x65676f68,0x00000000 }; printf("%s\n",(char*)&a[0]);
- 639 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:52:21 ]
- >>638
で、そう書く利点は?
- 640 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:53:55 ]
- 無いよ
リテラルがいやとかぬかすから書いただけ わざわざこんなめんどくさい書き方しなくてもいいようにC言語なりに考えられてるのに いやとかぬかすからねえ
- 641 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:56:11 ]
- 表示サンプルがhogeだったからまずかったのかね?
- 642 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 03:05:36 ]
- >>637
private な static メンバ関数ってそういう目的があるんすね ありがとうございます
- 643 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 03:07:01 ]
- 文字列リテラルを勝手に外部化して後付けで差し替え可能なリソースを作ってくれるプリプロセッサを所望してるんだよな
- 644 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 03:10:34 ]
- >>643
いいたいことがイマイチよくわからんがエスパー的ひらめきだと VC++のメニュー関連のリソースが浮かんだ しかも手書きでやらないといけないというのを・・・
- 645 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 03:12:21 ]
- >>640
誰も嫌とはいってなくね?
- 646 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 03:13:55 ]
- おまけにVCのリソースを標準関数に喰わせようとすると無茶苦茶大変だし。
- 647 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 03:15:07 ]
- vsくらいになるとsettingとかあるんだけどな
勝手にxml読み込んだり書き出したりしてくれる機能があってそこへ 文字とかいれておけば呼び出せたりするんだが
- 648 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 03:24:32 ]
- 文字列リテラル外部化って今でもできるんじゃね?
文字列リテラルだけ書き込みヘッダ用意してそこへ入れておけば・・・ そういうのとは違うのか?
- 649 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 07:23:21 ]
- >>613
解決しちゃったの? こういう話だと思ったんだけど。 #include <stdio.h> #define TEST 5 #define TO_STRING2(s) #s #define TO_STRING(s) TO_STRING2(s) int main() { const char *p = TO_STRING(TEST); puts(p); }
- 650 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 07:29:54 ]
- メモリの大きさがそれほど無い組み込み環境化だとC++って使われるんだろうか
std::stringとかの動作を考えてみてもすげー細かいレベルでメモリが断片化しそうなんだが
- 651 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 07:35:09 ]
- >環境化
環境下
- 652 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 08:21:59 ]
- >>650
相応にメモリの使用量や動的確保のタイミングに注意を払えばいいだけのこと。 C++ はそういう環境でも使えるようにできている。
- 653 名前:620 mailto:sage [2010/02/19(金) 12:18:39 ]
- >>625
>>627 >>631 >>632 >>649 マクロ展開できてなかったのですか… 632と649にある方法を試したところ、ちゃんとマクロとして認識され、5が表示できました。 boost入れてなかったんで631にある方法は試せなかったのですが、boostを利用する方法もあったんですね。 今後も似たような場面に出くわす可能性が高いので、提示されたサンプルはメモらせてもらいます。 ありがとうございました。
|

|