在xcode中strcpy

时间:2015-07-07 13:13:40

标签: objective-c c c-preprocessor strcpy

这是我的代码

char strings[10][10] = {"aaa", "bbb", "ccc"};
strcpy(strings[0], strings[0]);

我在Xcode中创建了一个C项目,然后运行它将崩溃。 但如果它是一个Objective-C项目,那就没问题了

2 个答案:

答案 0 :(得分:2)

当源和目标重叠(或与您的情况相同)时调用strcpy是C,C ++,Objective-C和Objective-C ++中未定义的行为。未定义的行为意味着"任何事情都可能发生"。 "任何"包括使用一个编译器崩溃而不是与另一个编译器崩溃。它还包括更糟糕的事情。

答案 1 :(得分:0)

如果它是C项目,strcpy将被替换为 #if __has_builtin(__builtin___strcpy_chk) || defined(__GNUC__) #undef strcpy #define strcpy(dest, src) \ __builtin___strcpy_chk (dest, src, __darwin_obsz (dest)) #endif