编译时函数执行

Compile-Time Function Execution

有没有办法执行compile-time function execution in C? With GCC? I've only seen this available using constexpr in C++.

只要表达式中只涉及常量,就会在编译时进行计算。 C++ constexpr 主要是一种不涉及宏的类型安全方式。在 C 中,只有宏。例如:

#define CIRCLE_AREA(r) (int32_t)( (double)(r) * (double)(r) * M_PI )

int32_t area = CIRCLE_AREA(5);

在编译时执行所有计算,因此相当于这样写:

int32_t area = 78;