这是问题: 在我的代码的头文件中,我有一个宏,它不会在定义为n_image的第二个宏调用中扩展,它计算周期性边界条件。如果数字是负数,我用floor()库函数替换了int类型转换。但是,我想,第二个宏对负数的调用甚至没有响应。
宏定义:
#define n_int(x) ( (x) >= (0) ? (int)((x)+0.5) : floor((x)-0.5))
#define n_image(a, b) ( (a) - n_int((a)/(b))*(b))
我的问题:这可能是我的宏的编译器问题或问题吗? 顺便说一下,下面的宏只适用于负数,但这不是我需要实现的,应该测试用户在第一个宏中提供的数字。
#define n_image(a, b) ( (a) - floor(((a)/(b))-0.5)*(b))