Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C.
#include "stdio.h"
int main() {
size_t n;
scanf("%Iu", n);
int array[n];
return 0;
}
restrict
переменные, регистровые переменные, которых нет с C++. int i;
int main()
{
i = 1;
return 0;
}
int i;
int f(void)
{
i = 1;
return 0;
}
$ gcc -std=c89 a.c b.c -o a
$ gcc -std=c99 a.c b.c -o a
$ gcc -std=c11 a.c b.c -o a
$ g++ a.c b.c -o a
/tmp/cc8AfU2T.o:(.bss+0x0): multiple definition of `i'
/tmp/ccBOJ29v.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status