【发布时间】:2013-11-11 20:43:39
【问题描述】:
我最近注意到我编写的一些程序(使用 libgetopt)在给出以双破折号开头的参数时会出现段错误,例如--help.
我设法用下面的小程序重现了这个:
#include <getopt.h>
int main(int argc, char *argv[]) {
// Parse arguments.
struct option long_options[] = {
{ "test", required_argument, 0, 't' }
};
int option_index, arg;
while((arg = getopt_long(argc, argv, "t:", long_options, &option_index)) != -1);
return 0;
}
当我使用./a.out --help 编译和运行它时,它工作正常。但是,一旦我使用-O3 进行编译,它就会出现段错误。在 OS X Mavericks (10.9) 上使用 Apple LLVM 版本 5.0 (clang-500.2.79) 观察到此行为。
我可以做些什么来解决这个问题,或者我应该在以后避免使用-O3?
【问题讨论】:
标签: c optimization segmentation-fault getopt