Компиляция Си и С++. Скомпилируется ли приведенный код - C (СИ)
Формулировка задачи:
Возможно ли скомпилить такое?
main.cpp
file.c
file.h
#include <stdio.h>
#include "file.h"
int main()
{
printf("Hello");
printf(func());
return 0;
}#include "file.h"
char* func()
{
return "This is a C string";
}#ifndef FILE_H #define FILE_H char* func(); #endif // FILE_H
Решение задачи: «Компиляция Си и С++. Скомпилируется ли приведенный код»
textual
Листинг программы
extern "C" {
#include "file.h"
}
Объяснение кода листинга программы
- В начале кода идет объявление директивы
externC``, которая необходима для корректной работы функций, объявленных в файле стандартного кода C и C++. Эта директива позволяет избежать искажения имен при связывании объектных файлов. - Затем происходит включение заголовочного файла
file.hс помощью директивы#include. Этот файл содержит определения и объявления, которые используются в данном коде. Таким образом, в данном коде происходит две вещи: - Объявление директивы
externC``. - Включение заголовочного файла
file.h.