同一翻訳内で同じ文字列は、
同じ領域に割り当てられると
規格で保証されていますか?

char *amanojaku(char *str)
{
 return str == "YES" ? "NO" : "YES";
}
char *say(char *str)
{
 printf("%s,", str);
 return str;
}
main()
{
 // VCでは期待通り、"YES,NO,YES"と出力された
 say(amanojaku(say(amanojaku(say(amanojaku("NO"))))));
}