Windows 3D Pipesスクリーンセーバーの隠されたデザイン欠陥とティーポット

2024-12-28

魅力的なパイプアニメーションで知られるWindows 3D Pipesスクリーンセーバーには、あまり知られていない秘密が隠されています。それは、めったに現れないティーポットです。このティーポットは、コンピュータグラフィックスにおける標準的な参照オブジェクトであるユタティーポットへのオマージュですが、その出現率の低さから、生産性の低下に関するユーザーからの苦情が寄せられました。この記事では、古いバージョンのWindowsでは、ソフトウェアレンダリングにより、サーバーでのCPU使用率が高くなることも明らかにされており、サーバーには黒いスクリーンセーバーを使用することを推奨しています。

続きを読む

C++コンパイラエラー:関数宣言からの無意味なエラー

2024-12-12

C++アプリケーションにXAMLサポートを追加しようとした開発者は、winrt/Windows.UI.Xaml.hヘッダーファイルを含めるだけで、一連のコンパイラエラーに遭遇しました。エラーの原因は、一見普通の関数宣言のように見える以下の部分でした。`template struct consume_Windows_UI_Xaml_IExceptionRoutedEventArgs { [[nodiscard]] auto ErrorMessage() const; };`根本原因は、開発者のプロジェクトに既に存在するErrorMessageという名前のマクロで、関数名と衝突していました。このマクロはErrorMessageStringオブジェクトを作成し、エラーメッセージ文字列へのポインタを返していました。マクロの境界がないため、コンパイラは関数宣言をマクロ呼び出しと誤って解釈し、「引数が足りない」などのエラーが発生しました。解決策としては、ヘッダーファイルを含める前に#pragma undefを使用してマクロを無効化するか、マクロを完全に削除してインライン関数に置き換えることです。

続きを読む