これが簡単な解決策です。ac/c++ プログラムの文字列リテラルは、通常、ELF ファイルの読み取り専用セグメントに配置されます。
あなたのコメントがパターンに従うと仮定します:
My_Comment: ....
プログラムにいくつかの文字列定義を追加できます。
#include <stdio.h>
void main() {
char* a = "My Comment: ...";
}
コンパイル:
$ gcc test.c
次に、実行可能ファイルでコメント パターンを検索します。
$ strings a.out | grep Comment
My Comment: ...
コメントを実行可能ファイルに埋め込むユースケースは何ですか?
ファローアップ:
-O3 フラグを指定してコンパイルしている場合、この未使用の文字列は最適化されて除外されるため、ro データにはまったく格納されません。同じ考えに基づいて、次の方法で gcc をだますことができます。
#include <stdio.h>
void main() {
FILE* comment = fopen("/dev/null", "w");
fprintf(comment, "My Comment:");
}
次に、コメントを検索します。もちろん、2 つまたは 3 つのシステム コールのオーバーヘッドが発生しますが、問題なく使用できることを願っています。
これがうまくいくかどうか教えてください!