10/02/19 02:23:19
>>610
なんかうちの環境が悪いだけでしたあざす
634:デフォルトの名無しさん
10/02/19 02:29:21
>>630
これってstaticにする意味って何?
あおりじゃなくてただの素人です
635:デフォルトの名無しさん
10/02/19 02:30:09
俺は文字列リテラル外すマクロが欲しい
636:デフォルトの名無しさん
10/02/19 02:35:19
>>635
文字コードすべて暗記してint型の配列を確保してエンディアン考慮して
文字を16進数にでもして並べていけばリテラルいらないよ
637:デフォルトの名無しさん
10/02/19 02:40:11
>>634
static にしないと引数として this ポインタが付く。無駄な引数は付けないのが当たり前。
638:デフォルトの名無しさん
10/02/19 02:44:40
リテラル嫌なら
int a[2] = { 0x65676f68,0x00000000 };
printf("%s\n",(char*)&a[0]);
639:デフォルトの名無しさん
10/02/19 02:52:21
>>638
で、そう書く利点は?
640:デフォルトの名無しさん
10/02/19 02:53:55
無いよ
リテラルがいやとかぬかすから書いただけ
わざわざこんなめんどくさい書き方しなくてもいいようにC言語なりに考えられてるのに
いやとかぬかすからねえ
641:デフォルトの名無しさん
10/02/19 02:56:11
表示サンプルがhogeだったからまずかったのかね?
642:デフォルトの名無しさん
10/02/19 03:05:36
>>637
private な static メンバ関数ってそういう目的があるんすね
ありがとうございます
643:デフォルトの名無しさん
10/02/19 03:07:01
文字列リテラルを勝手に外部化して後付けで差し替え可能なリソースを作ってくれるプリプロセッサを所望してるんだよな
644:デフォルトの名無しさん
10/02/19 03:10:34
>>643
いいたいことがイマイチよくわからんがエスパー的ひらめきだと
VC++のメニュー関連のリソースが浮かんだ
しかも手書きでやらないといけないというのを・・・
645:デフォルトの名無しさん
10/02/19 03:12:21
>>640
誰も嫌とはいってなくね?
646:デフォルトの名無しさん
10/02/19 03:13:55
おまけにVCのリソースを標準関数に喰わせようとすると無茶苦茶大変だし。
647:デフォルトの名無しさん
10/02/19 03:15:07
vsくらいになるとsettingとかあるんだけどな
勝手にxml読み込んだり書き出したりしてくれる機能があってそこへ
文字とかいれておけば呼び出せたりするんだが
648:デフォルトの名無しさん
10/02/19 03:24:32
文字列リテラル外部化って今でもできるんじゃね?
文字列リテラルだけ書き込みヘッダ用意してそこへ入れておけば・・・
そういうのとは違うのか?
649:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/19 07:29:54
メモリの大きさがそれほど無い組み込み環境化だとC++って使われるんだろうか
std::stringとかの動作を考えてみてもすげー細かいレベルでメモリが断片化しそうなんだが
651:デフォルトの名無しさん
10/02/19 07:35:09
>環境化
環境下
652:デフォルトの名無しさん
10/02/19 08:21:59
>>650
相応にメモリの使用量や動的確保のタイミングに注意を払えばいいだけのこと。
C++ はそういう環境でも使えるようにできている。
653:620
10/02/19 12:18:39
>>625
>>627
>>631
>>632
>>649
マクロ展開できてなかったのですか…
632と649にある方法を試したところ、ちゃんとマクロとして認識され、5が表示できました。
boost入れてなかったんで631にある方法は試せなかったのですが、boostを利用する方法もあったんですね。
今後も似たような場面に出くわす可能性が高いので、提示されたサンプルはメモらせてもらいます。
ありがとうございました。