小编liu*_*liu的帖子

如何在c中将datetime转换为unix时间戳?

场景是:我使用libexif以"YYYY-MM-DD HH:MM:SS"格式获取日期时间.为了最大限度地降低节省成本,我想将日期时间转换为unix时间戳或类似,仅花费64位或32位.c有什么明确的方法吗?

c unix datetime timestamp

20
推荐指数
2
解决办法
5万
查看次数

使用VS 2008和GCC时对__VA_ARGS__的不同处理问题

我试图找出一个问题,因为variadic宏的使用不正常.这是假设宏:

#define va(c, d, ...) c(d, __VA_ARGS__)
#define var(a, b, ...)  va(__VA_ARGS__, a, b)

var(2, 3, printf, “%d %d %d\n”, 1);
Run Code Online (Sandbox Code Playgroud)

对于gcc,预处理器将输出

printf("%d %d %d\n", 1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

但对于VS 2008,输出是

printf, “%d %d %d\n”, 1(2, 3);
Run Code Online (Sandbox Code Playgroud)

我怀疑差异是由于对VA_ARGS的不同处理造成的,对于gcc,它首先将表达式扩展为va(printf,"%d%d%d \n",1,2,3),并处理1,2 ,3作为宏va 的VA_ARGS.但对于VS 2008,它将首先将b视为VA_ARGS用于宏va,然后进行扩展.

哪一个是C99可变参数宏的正确解释?或者我的用法属于未定义的行为?

gcc visual-studio-2008

7
推荐指数
2
解决办法
1921
查看次数

在Cocoa应用程序中fork

我的问题不是fork()的最佳方案.但是,这是我能得到的最好的功能.

我正在使用Mac OSX上的Firefox插件.为了使其健壮,我需要创建一个新进程来运行我的插件.问题是,当我分叉一个新进程时,就像这样:

if (fork() == 0) exit(other_main());

但是,由于状态未清除,我无法正确初始化我的新进程(调用NSApplicationLoad等).有任何想法吗?顺便说一下,我当然不想创建一个新的二进制文件并执行它.

macos cocoa fork

5
推荐指数
1
解决办法
2173
查看次数

如何根据Windows版本调用不同的Win API?

具体问题是,Windows上条件变量的支持从Vista开始,对于早期版本的Windows(Windows XP),我有一个模拟条件变量代码排序解决了这个问题.但是,我希望能够在系统支持时调用本机条件变量API,并且仅在XP和早期版本上回退到我的版本.我尝试使用GetVersionInfo API检测Windows版本,但它仍然在启动时给出错误(无法找到InitializeConditionVariable排序的API条目).

我不熟悉Windows编程,你如何很好地解决温和的后备问题?

winapi fallback

0
推荐指数
1
解决办法
284
查看次数

标签 统计

c ×1

cocoa ×1

datetime ×1

fallback ×1

fork ×1

gcc ×1

macos ×1

timestamp ×1

unix ×1

visual-studio-2008 ×1

winapi ×1