我需要创建一个宏
DISP(sqrt, 3.0)
Run Code Online (Sandbox Code Playgroud)
扩展为
printf("sqrt(%g) = %g\n", 3.0, sqrt(3.0));
Run Code Online (Sandbox Code Playgroud)
这是我目前尚未完成的尝试:
#include <math.h>
#include <stdio.h>
#define DISP(f,x) printf(#f(%g) = %g\n", x, f(x))
int main(void)
{
DISP(sqrt, 3.0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
gcc -E 表明我当前在其中有一个额外的双引号。
如果在#f之前加上任何双引号或转义的双引号,或者如果我使用## f,则宏将不再扩展。怎么修?
小智 5
你要这个:
#define DISP(f,x) printf(#f"(%g) = %g\n", x, f(x))
Run Code Online (Sandbox Code Playgroud)
提供以下输出:
sqrt(3) = 1.73205
(请参阅http://codepad.org/hX96Leta)