これでアセンブル時に好きな文字列が出力できますが、コンパイル時に計算した内容を指定して出力することはできません。 そこで、すべての出力しうる文字列についてそれぞれ出力のコードを用意し、コンパイル時に constexpr if でどのコードをアセンブリに出力するかを選択することで、コンパイル時計算の結果をアセンブリコードに反映します。 つまり、出力できる文字列が用意したものに限られます。 しかし、画像のビットマップデータの出力には、画素値を出力するコードを 256 個1用意しておけばよいので、さほど問題ではありません。 画像の幅、高さなどのヘッダに含まれる情報は、マクロで何とかしましょう(妥協)。 問題なのは、末尾に改行がつくことです。 画素ごとに出力すると、その間にいちいち改行が挿入されることになります。 つまり、コンパイル時に出力できる画像ファイルは、画素値同士が改行で区切られるようなフ
![C++ コンパイル時「出力」で画像ファイル生成 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/36b60d912ba5295f8ddb3ce6c8ab5f2d451beae6/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-f625e957b80c4bd8dd47b724be996090.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9QyUyQiUyQiUyMCVFMyU4MiVCMyVFMyU4MyVCMyVFMyU4MyU5MSVFMyU4MiVBNCVFMyU4MyVBQiVFNiU5OSU4MiVFMyU4MCU4QyVFNSU4NyVCQSVFNSU4QSU5QiVFMyU4MCU4RCVFMyU4MSVBNyVFNyU5NCVCQiVFNSU4MyU4RiVFMyU4MyU5NSVFMyU4MiVBMSVFMyU4MiVBNCVFMyU4MyVBQiVFNyU5NCU5RiVFNiU4OCU5MCZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDbWlkZGxlJnM9ZDRhNjc4NDhlMWI5NTUzOTg0MGIyNjMyODI3NWMyMTc%26mark-x%3D142%26mark-y%3D151%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTcxNiZ0eHQ9JTQwUmFjbGFtdXNpJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzImdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1hNDVkNTFjMzI5OTQ2MzczNzhjNTg3ZjJiMDE5ZDhjMg%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Da3fb5922bf4f0a17dc667a771a274b97)