我正在用 C 编写一个非破坏性转换例程,我刚刚意识到(至少在 Visual C++ 中)函数是以相反的顺序解析的。
所以:
main()
{
char* psString[] = { "Hello", "World", "World2", "World3" };
printf("%s - %s - %s - %s\n",
H2A_N(psString[0]),
H2A_N(psString[1]),
H2A_N(psString[2]),
H2A_0(psString[3]));
return 1;
};
我的代码不是可重入的,只在一个线程中运行,所以我打算使用一个静态字符数组来存储结果。
我的计划是有一个函数 H2A_0,它将输出写入缓冲区的开头并留下下一个地址以供后续调用 H2A_N。
我确实意识到这种方法存在一些缺点,但我必须将此转换例程应用于许多现有代码,因此越简单越好(我不想弄乱释放内存)。
我的问题是:
- 以相反的顺序解析函数(当它们作为参数传递给其他函数时)是否是 C 标准的一部分。
- 有一个更好的方法吗?