Проблемы с компиляцией c 20

#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 в командную строку.