1. ホーム
  2. c++

[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。

2022-01-26 21:18:15

質問

私はC++の初心者なので、phidget-codeの例でこのエラーの意味がわかりません。

Main.cpp:8:16: error: expect unqualified-id before numeric constant

//verander de volgende informatie naar de informatie voor jouw database

#define dserver "oege.ie.hva.nl"
#define duser "username"
#define dpassword "password"
#define ddatabase "databasename"

#define homeid 1234 //line 8

構文エラーでしょうか?それとも他に何か?私はintの代わりに#defineを使っています。

EDIT: エラーログの全文を追加しました。

完全なエラーログです。 http://pastebin.com/3vtbzmXD

main.cppの全コード。 http://pastebin.com/SDTz8vni

解決方法は?

エラーの全容は

error: expected unqualified-id before numeric constant
 note: in expansion of macro ‘homeid’
string homeid;
       ^

マクロと同じ名前の変数を宣言しようとしているが、それはできない。プリプロセッサはすでにプログラムを踏みつぶし、それを string 1234; これは有効な宣言ではありません。プリプロセッサはプログラムの構造を知らないし、マクロは言語のスコープルールに従わない。

可能であれば、マクロではなく、定数やインライン関数などの言語機能を使用する。この場合

const int homeid = 1234;

これはグローバルな名前空間にスコープされ、より狭いスコープで同じ名前を持つ何かによって安全に隠すことができます。隠された場合でも、これは常に ::homeid .

本当にマクロが必要な場合は、「マクロを使う」という慣習に従うのが賢明です。 SHOUTY_CAPS をマクロに使用します。マクロの使用に関連する潜在的な危険や奇妙さに注意を払うだけでなく、他の大文字を使用した名前と衝突することはありません。