Я пытаюсь скомпилировать атрибут ((target ())) пример с помощью clang, поставляемого с xcode:
//test.cpp
__attribute__((target("arch=atom")))
void foo() {} // will be called on 'atom' processors.
__attribute__((target("default")))
void foo() {} // will be called on any other processors.
int main ()
{
return 0;
}
clang --version && clang test.cpp
но не получается:
Apple LLVM version 9.1.0 (clang-902.0.39.2)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Applications/Xcode9.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
test.cpp:4:6: error: redefinition of 'foo'
void foo() {} // will be called on any other processors.
^
test.cpp:2:6: note: previous definition is here
void foo() {} // will be called on 'atom' processors.
^
1 error generated.
Когда я пытаюсь скомпилировать этот код с помощью clang binary для osx , он работает!
clang version 8.0.0 (tags/RELEASE_800/final)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Users/oleksii/Downloads/clang+llvm-8.0.0-x86_64-apple-darwin/bin/.
Также это работает, когда я использую онлайн-компиляторы. Я пробовал разные версии XCode, и это просто не работает. Почему поведение отличается?