test.h
Код: Выделить всё
#ifndef TEST_H
#define TEST_H
extern void test(int * restrict x, const int * restrict y);
#endif
Код: Выделить всё
#include "test.h"
int main(void)
{
int n = 1;
int m = 2;
test(&n, &m);
return 0;
}
Код: Выделить всё
extern "C" {
#include "test.h"
}
int main(void)
{
int n = 1;
int m = 2;
test(&n, &m);
return 0;
}
Вопрос:
Есть ли переносимый способ использования C99 (или более высокие) ключевые слова в файле заголовка, а затем включить этот файл заголовка для использования в C++? В различных библиотеках C используется ключевое слово strict, и было бы желательно иметь возможность использовать их в библиотеке C++. В качестве простого примера, версия memcpy на C (я знаю, что версия memcpy на C++ не использует ограничения, конечно, но это достаточно простой пример):
https://en.cppreference.com/w/c/string/byte/memcpy
Обратите внимание: Нет -портативные решения существуют. Например:
Код: Выделить всё
#if defined(__GNUC__) || defined(__clang__)
// GCC or clang
#define restrict __restrict__
#else
// MSVC
#define restrict __restrict
#endif
Подробнее здесь: https://stackoverflow.com/questions/793 ... n-c-source