我似乎对我在C程序中定义的宏有问题。
我编译了这个软件并用MIPS编译器成功地运行了它。
它构建正常,但在运行时使用icc时抛出错误“分段错误”。
我在64位体系结构(SGI上的MIPS、带-64标志的MIPS和intel平台上的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。这可能是我的问题。我要去追查。

最佳答案

这可能与系统的“末端性”有关。看起来似乎MIPS具有可切换的末端性。我不确定你是否已经使用了正确的结束语,但如果你没有,你肯定会有问题。

08-06 21:02