我正在处理一个递归宏。但是,它似乎不是递归扩展的。下面是一个极小的工作示例,以说明我的意思:
// ignore input, do nothing
#define ignore(...)
// choose between 6 names, depending on arity
#define choose(_1,_2,_3,_4,_5,_6,NAME,...) NAME
// if more than one parameter is given to this macro, then execute f, otherwise ignore
#define ifMore(f,...) ch
因此,我试图弄清楚堆读取是如何通过预取来减缓处理器能力的,这只是一个理论问题,例如,我使用了一些类似C的神奇语言。
让我们假设我们有一些120字节的堆,它有一些内存被一个程序使用。0.19,/* FREE /,40-79,/ FREE到末尾(119) *,我有一些结构,内存为20个字节,可以神奇地对齐
#include <stdlib.h>
struct magic_struct {
long long int foo[3];
short int bar;
};
typedef MagicStruct struct magic_struct;
void read_
我正在尝试使用#if检查宏和枚举是否相等。即使两者具有相同的值,检查也会失败。为什么? 使用#define数字2创建了一个宏。创建了包含一个值为2的条目的枚举。使用#if对两者进行了比较。正在传递与%2的比较宏。但是将宏与枚举进行比较失败。 #include <stdio.h>
#define NUMBER 2
enum numbers
{
zero = 0,
one,
two,
three
};
int main ()
{
printf("NUMBER: %x and two: %x\n", NUMBER, two
让我们考虑两个几乎相同的代码:
第一
for (int k=0;k<1000;k++)
{
for (int i=0;i<600;i++)
{
for (int j=0;j<600;j++)
{
tab[i][j] = i *j;
}
}
}
第二
for (int k=0;k<1000;k++)
{
for (int i=0;i<600;i++)
{
for (int j=0;j<600;j++)