有没有办法将gcc的typeof扩展名转换为字符串,例如:
#define printType(a) printf("%s", #typeof(a))
Run Code Online (Sandbox Code Playgroud)
所以我可以这样做:
int a = 4;
printf("Type of a is: ");
printType(a);
Run Code Online (Sandbox Code Playgroud)
得到的输出:
Type of a is: int
Run Code Online (Sandbox Code Playgroud)
可能的用法如下:
#include <stdio.h>
#define indirect_print(a) print_##typeof(a)(a)
void print_int(int *i) {
printf("%d", *i);
}
void print_char(char *c) {
printf("%c", *c);
}
int main(void) {
char C = 'C';
int I = 100;
{
char *a = &C;
indirect_print(a);
}
{
int *a = &I;
indirect_print(a);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果可能,它应该适用于所有类型,包括结构和联合,而不依赖于手动将每个类型添加到列表.
不使用多平台库,例如 GLUT 或 SDL。
在 C 中(没有 Objective-C),如何创建一个带有可以绘制的有效 OpenGL 上下文的窗口?
我希望能够从命令行编译它,所以请不要使用 XCode 拖放内容!
如何在FreeBSD中列出当前进程中的所有线程?或者至少,获取运行的线程数.
我找到了Linux系统调用pstat_getproc,它返回一个包含pst_nlwps线程数的struct .我在FreeBSD上寻找类似的东西.
或者也许有一些类似于/dev/fd线程的东西.
我可以使用任何东西来了解有多少其他线程正在运行.
我希望能够在C中以编程方式执行此操作,而不是使用现有的应用程序.