2016-08-17 13 views
0

プロジェクト全体で使用される共通の定数の束を格納するヘッダーを作成しました。C++ regsvrが静的const宣言の関数呼び出しでスタックする

static const double MY_CONST = FOO();

問題がREGSVRが私の新しいファイルで立ち往生ということである:彼らはこのようになります。 regsvrへのデバッグ後、この行にはまっているようです。 regsvrプロセスを終了した後、私はプログラムを実行し、それを実行することができます。しかし、これは明らかに配信時に正常に登録する必要があるため、今後の課題となります。これらのファイルのそれぞれには、static const doubleという定義がたくさんあるわけではありません。これを回避する方法はありますか?私は仕事にそれを得るように見えることはできませんしかし、私が持っていたアイデアはstatic const double

#define MY_CONST (double)[]({ static const double test = FOO(); return test; })

を返すラムダある#define方法でした。助言がありますか?

+0

'FOO()'何をしますか? DLLローディング時に呼び出すことを覚えておいてください(すべてのソースが 'MY_CONST'の別個のコピーを取得するので)。このヘッダを含むすべてのソースファイルに対して、DLLロード時に呼び出すことになります(これは' regsvr32'と一緒に使用されるため、 –

答えて

0

私はregsvr32にデバッグしました。これは、「ログイン」コンテキストを必要とする関数なので、DLLは登録時にフリーズします。これの回避策は、定数をプリプロセッサディレクティブとして割り当てることでした。

回答: #define MY_CONST FOO()

関連する問題