C,C++でソフトを組んでいます。
質問はシンボルの割付け方法です。
例えば、
boolean_symbol ← BOOLEAN
bynary_symbol ← BYNARY
word_symbol ← WORD
long_symbol ← LONG
の様に上記4つのシンボルを宣言したいとします。
これを
↓質問 シンボル名 宣言要素数
********* boolean_symbol, 1 → boolean_symbol
********* bynary_symbol, 2 → bynary_symbol[2]
********* word_symbol, 3 → word_symbol[3]
********* long_symbol, 4 → long_symbol[4]
上記の様に表記して、連続したメモリ上にシンボルを
割付けたいと思っています(分かりにくいでしょうか)。
このシンボル宣言だけで1ファイルとして分かり易く
宣言したいんですが、いい方法が見つかりません。
連続したメモリ上に任意の型、要素数を持たせるマクロ
やその他の方法がありましたらご教授ください。
宜しくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
あのう、余計なお世話かもしれませんが・・・
>具体的にいうと下記の様に宣言して
>AAA(ULONG( long_symbol , 1), CONT)
>AAA(UCHAR( bynary_symbol , 2), CONT)
使い方、これ見ても分からないんですが・・・
特に、CONTって一体何?
>&H00000 1
>&H00004 2
>&H00005 3
この表記は何ですか?VBですか?
C,C++というのなら、それなりの書き方というものがあるんですが。
bynary→binaryですし。
うだうだ言っててもしょうがないんで。
こんな感じにマクロ定義したらできますかねぇ?
#define DEC_START struct name{
#define DEC_END(name) } name;
#define FACT(type, name, size) name type[size];
で、使用する関数の中で、
DEC_START
FACT(ULONG, long_symbol, 1)
FACT(UCHAR, bynary_symbol, 2)
DEC_END(aaa)
と宣言し、
aaa.long_symbol = 1;
aaa.bynary_symbol[0] = 2;
aaa.bynary_symbol[1] = 3;
とすれば、近いことは出来ると思いますが。
なお、連続したメモリ領域を確保する場合にはアライメントに注意する必要がありますんで、1byte確保した次にlongを確保すると穴があきます。これを避けるには、コンパイルオプションを変えれば可能ですが、実行速度が遅くなるのでお勧めしません。
あと、C、C++ではビット単位で領域は確保できません。
本当は何がされたいのでしょうか?
No.1
- 回答日時:
typedef struct {
bool flag;
uint8_t bin[2];
uint16_t word[3];
uint32_t lng[4];
} Sym_t;
のように構造体を型定義するとか。
採取的な「何がしたい」(例えば「固定長データファイルを読み込みたい」とか。)ってのを、きちん説明しとくと、回答がつきやすいと思います。
この回答への補足
具体的にいうと下記の様に宣言して
AAA(ULONG( long_symbol , 1), CONT)
AAA(UCHAR( bynary_symbol , 2), CONT)
ソース内で下記の様にシンボルをそのまま使え
long_symbol = 1;
bynary_symbol[0] = 2;
bynary_symbol[1] = 3;
メモリ上は
&H00000 1
&H00004 2
&H00005 3
となるようにしたいんです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- その他(ニュース・社会制度・災害) 男女の固定的役割解消のための男女平等のイラスト。これは男女どちらのイメージに対するもの? 4 2023/02/23 21:52
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Ruby VBA 2 2023/01/14 14:14
- 政治 自民党も同じ穴のムジナですか? 3 2022/06/15 07:35
- 戦争・テロ・デモ アゾフ大隊がネオナチだと言う事実を頭ごなしに否定してる人がいますが、歴史を無視したいのですか? 11 2022/06/06 20:18
- XML MSFormsとは何ですか? 2 2022/05/02 09:38
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAで自動的にVBE画...
-
VBAを禁止している会社って...
-
マクロプログラムを修正するマクロ
-
Wordをマクロ有効にするには
-
Microsoft Word(β版)のエラー
-
PERSONAL..XLSを削...
-
texの数式番号の形式の変更の仕...
-
Word2007でファイルを開いたと...
-
Word文書に必須入力項目を設けたい
-
お願いいたします。
-
WORD2003 網掛け濃さの...
-
Word2013: コピー、切り取り、...
-
(実行時エラー5852)Excelデータ...
-
Wordのコメントを一括削除...
-
[Word]条件により表示・非表示...
-
Access2010マクロ メッセージ...
-
ワードのマクロで、蛍光ペンの...
-
他者の作ったVBAマクロを改...
-
Wordの「レ」チェックボックス...
-
Excelのマクロは管理者でないと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(実行時エラー5852)Excelデータ...
-
Access2010マクロ メッセージ...
-
Word文書に必須入力項目を設けたい
-
Excelのマクロは管理者でないと...
-
Excelのシートを印刷不可(禁止...
-
VBAを禁止している会社って...
-
Excelのマクロのショートカット...
-
画像判定の出来るマクロツール
-
Wordのマクロを有効にする方法
-
フリーソフト(電子印鑑)をイ...
-
今まで実行できていたマクロが...
-
エクセルのVBAで自動的にVBE画...
-
ThisWorkbook Moduleとは??
-
Excel2003 GET.CELL関数を使う...
-
KingsoftのOffice2013でExcelの...
-
EXCELのマクロを有効にする
-
WORDのマクロでNG文字がある場...
-
texの数式番号の形式の変更の仕...
-
マクロのアイコンを消したい
-
MS-Projectの使い方(マクロを...
おすすめ情報