我目前正在 Windows 上使用 Visual Studio 和 C 开发一个工具,但是我注意到我无法将
unistd.h
等库导入到我的源文件中以进行命令行参数解析。
目前,我正在使用
strcmp
检查命令行参数并将标志与值相关联。
// Get supplied command-line arguments
SQLCHAR* server = NULL;
SQLCHAR* database = NULL;
SQLCHAR* username = NULL;
SQLCHAR* password = NULL;
SQLCHAR* query = NULL;
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "-s") == 0) {
server = argv[i + 1];
}
else if (strcmp(argv[i], "-d") == 0) {
database = argv[i + 1];
}
else if (strcmp(argv[i], "-u") == 0) {
username = argv[i + 1];
}
else if (strcmp(argv[i], "-p") == 0) {
password = argv[i + 1];
}
else if (strcmp(argv[i], "-q") == 0) {
query = argv[i + 1];
}
}
在 Windows 上有更好的方法吗?
谢谢你。
unistd.h
不是Windows API的一部分(它不是C标准的一部分,所以你不能责怪Windows),但是你可以使用MinGW来编译
getopt()
和getopt_long()
(GNU扩展)在 Windows 上以类似于 UNIX 的操作系统中的方式解析它们。
如果你做不到这一点,你可以简单地从网络上获取
getopt()
的 source 的副本,并在你的代码中使用它(尽管它是在 GNU 通用公共许可证下分发的)。