【发布时间】:2021-03-17 03:26:58
【问题描述】:
我想定义几个宏来计算一个类型的大小。下面是一个正常运行的例子。
#include <stdio.h>
#define A sizeof(long long) / sizeof(int)
#define B 36 / A
int main(){
printf("%zu %zu\n", A, B); // print out: 2 1
}
虽然在使用 SIMD 向量时会变得很奇怪,例如(A 的定义)
#include <x86intrin.h>
#include <stdio.h>
#define A sizeof(__m128i) / sizeof(int)
#define B 36 / A
int main(){
printf("%zu %zu\n", A, B); // print out 4 0
}
有什么问题?
【问题讨论】:
-
提示:算子评估顺序。
-
an example running normally如果您希望B在第一种情况下是1,那么我想我不明白您认为B在第二种情况下可能是什么,其他比0.
标签: c c-preprocessor simd