一个简单的脚本,可以在命令行下获取C语言中数据类型的大小。在邮件列表的讨论中看到的这个主意,我用 Perl 重写了一下。
代码很简单,见下。分享一下,希望对你有用。
PERL:
-
#!/usr/bin/perl -w
-
-
use strict;
-
use File::Temp qw/tempfile tempdir/;
-
-
my $type=$ARGV[0];
-
my $dir = tempdir(CLEANUP => 1);
-
my ($obj, $src) = tempfile("$dir/XXXXX", SUFFIX => '.c', UNLINK => 0);
-
$src =~ s/\.c$//g;
-
my $exe_file = $src;
-
-
#include <stdio.h>
-
#include <stdlib.h>
-
#include <stddef.h>
-
#include <stdbool.h>
-
#include <unistd.h>
-
#include <dirent.h>
-
#include <sys/types.h>
-
#include <sys/socket.h>
-
#include <netinet/in.h>
-
#include <sys/stat.h>
-
#include <sys/time.h>
-
#include <regex.h>
-
#include <obstack.h>
-
int
-
main (void)
-
{
-
$type x;
-
printf ("%d\\n", sizeof x);
-
exit (0);
-
}
-
EOF
前几天也想写个这东西,不过没你这么绝,用perl生成源代码再编译……这个方法很灵活,但是有个问题,如果要求的数据结构不再你的代码头文件中,不是算不了吗?所以要加个参数指定struct所在的头文件就更灵活了。
[Reply]
王 聪 reply on January 9, 2010 9:50 pm:
恩,如果你需要可以自己加上这个功能。
[Reply]