#c #gcc #clang
#c #gcc #лязг
Вопрос:
Я пытаюсь поиграть с некоторыми новыми функциями c 20, но я не могу скомпилировать даже несколько простых строк кода.. Я работаю над macOS и сначала попытался скомпилировать его в Xcode с диалектом языка c 2a, который не сработал, а затем попытался скомпилировать код из командной строки с помощью g , но я получил похожие ошибки. Все обновлено (Clang версии 12, g / gcc версии 10), и я знаю, что все еще есть некоторые проблемы с некоторыми функциями.
Итак, вот пример:
import <iostream>;
#include <vector>
int main(){
std::vector<int> vec{1,2,3};
for (int e : vec) std::cout << e << std::endl;
}
скомпилирован с:
g -std=c 2a -fmodules-ts test.cpp
Выдает следующую ошибку:
header file <iostream> (aka '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c /v1/iostream') cannot be imported because it is not known to be a header
Итак, я предположил, что существует проблема с путем заголовка из цепочки инструментов, который не имеет последних обновлений, поэтому я попытался изменить путь на g main includes.
Итак, я попытался:
g -std=c 2a -fmodules-ts -I/usr/local/Cellar/gcc/10.2.0_3/include/c /10.2.0/ test.cpp
Который выдал эту ошибку:
test.cpp:1:8: error: header file <iostream> (aka '/usr/local/Cellar/gcc/10.2.0_3/include/c /10.2.0/iostream') cannot be imported because it is not known to be a header unit
import <iostream>;
^
In file included from test.cpp:2:
In file included from /usr/local/Cellar/gcc/10.2.0_3/include/c /10.2.0/vector:60:
/usr/local/Cellar/gcc/10.2.0_3/include/c /10.2.0/bits/stl_algobase.h:59:10: fatal error: 'bits/c config.h' file not found
#include <bits/c config.h>
^~~~~~~~~~~~~~~~~~
2 errors generated.
Может кто-нибудь помочь с этим?
Я знаю, что могу выполнить эту компиляцию, используя #include — это было просто в качестве примера для работы с новыми функциями — у меня была такая же проблема, например, с импортом.
Я действительно борюсь с сортировкой чего-либо — какой компилятор является лучшим вариантом использования для c 20 и как и где я могу включить / найти standardlib, который поддерживает c 20?
И как я могу использовать все вместе в Xcode?
Ответ №1:
gcc 10 пока не поддерживает это. Вы можете использовать магистраль gcc или ветку модулей gcc, и вам нужно добавить -fmodules-ts
в командную строку.