可能重复:
获取本地应用程序数据目录路径的跨平台方式是什么?
我正在寻找一种方法来获取本地应用程序数据文件夹的位置,这是一个特殊的Windows文件夹,用Java.遗憾的是,以下内容仅适用于具有默认设置的英文版Windows XP:
System.getProperty("user.home") + "\\Local Settings\\Application Data"
Run Code Online (Sandbox Code Playgroud)
我想拥有的是.NET中的类似内容:
System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
Run Code Online (Sandbox Code Playgroud)
有没有办法在不必调用Windows Shell API的SHGetSpecialFolderLocation的情况下执行此操作?
我最近下载了从GTK +网站下载的gtk + all-in-one软件包,工作正常,允许我使用MinGW编译器在Windows上构建gtk +应用程序.
但是,现在在lib/pkgconfig中查看pkg-config的*.pc文件时,我注意到了一些奇怪的东西.以下是glib-2.0的开头如何:
prefix=c:/devel/target/059c48de6b739307c37648aba3005b29
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Run Code Online (Sandbox Code Playgroud)
我的gtk +文件夹驻留在与C:\不同的驱动器上,我根本没有C:\ devel文件夹.那么这个前缀代表什么呢?如果我决定编写*.pc文件以便轻松链接我自己的应用程序,我会使用什么前缀?
令人惊讶的是,使用 pkg-config按预期工作并返回gtk +文件夹中的库和标头的正确路径.
考虑以下C程序:
#include <stdio.h>
#include <stdarg.h>
typedef void (callptr)();
static void fixed(void *something, double val)
{
printf("%f\n", val);
}
static void dynamic(void *something, ...)
{
va_list args;
va_start(args, something);
double arg = va_arg(args, double);
printf("%f\n", arg);
}
int main()
{
double x = 1337.1337;
callptr *dynamic_func = (callptr *) &dynamic;
dynamic_func(NULL, x);
callptr *fixed_func = (callptr *) &fixed;
fixed_func(NULL, x);
printf("%f\n", x);
}
Run Code Online (Sandbox Code Playgroud)
基本上,我们的想法是在"泛型"函数指针中存储带有变量参数的函数.作为比较,我还包括另一个具有固定参数列表的函数.现在看看在x86 Linux,amd64 Linux,Win32和Win64上运行时会发生什么:
$ gcc -m32 -o test test.c
$ file test
test: ELF 32-bit LSB executable, Intel …Run Code Online (Sandbox Code Playgroud)