我在 C 程序中定义的宏似乎有问题。
我编译这个软件并使用 MIPS 编译器成功运行它。
它构建正常,但在使用 icc 时会在运行时引发错误“分段错误”。
我在 64 位架构上编译了这两个架构(SGI 上的 MIPS,intel 平台上带有 -64 标志和 icc)。
我需要使用一些魔术开关来使其在两个系统上都能正常工作吗?我为英特尔编译器打开了警告,程序中调用宏的每个地方都会引发警告。通常是宏参数上的类型不匹配(int 到 char *)或类似的东西。
这是有问题的宏
#define DEBUG_ENTER(name) {tdepth++;
if(tnames[tdepth] == NULL) tnames[tdepth] = memalign(8, sizeof(char)*MAXLEN);
strcopy(tnames[tdepth],name);
FU_DEBUG("Entering \n");}
这基本上用于调试 - 根据函数调用的数量打印到带有一组选项卡的日志文件。(tdepth = 标签深度)
我在手册页中做了一些检查。似乎 memalign 仅在 IRIX 上受支持。这可能是我的问题。我要追踪它。