私は、マクロの定義とマクロの名前の2つの文字列にMakefileからマクロ定義を解析しています。たとえば、ここに私のMakefileからマクロ定義行です:Cプログラミングストリングの解析
マクロ-1 =ボディ-1
私のコードは、バスエラー/セグメンテーションフォールトを生成します。
static void parse_macro_def(const char* line)
{
char* m_name;
int name_pos = 0;
int i = 0;
while(line[i++] != '=') //iterate until an equal sign is found
{
if(!isspace(line[i])) //copy characters to m_name unless the character is whitespace
{
m_name[name_pos++] = line[i];
}
}
}
m_name[name_pos] = '\0';
M_NAMEは、すべてのヘルプのマクロ-1 のおかげに設定する必要があります!
行に '= '記号が含まれていないと、セグメント化エラーが発生することがあります。 – dreamlax
また、 'm_name'のためにスペースを割り当てていないので、ポインタの値は不確定です。つまり、ポインターを指していないと思われる場所を指しています。 – dreamlax
'strtok()'を使ってあなたの人生を楽にしましょう。 –