Я работаю с Vscode, и Intellisense говорит мне, что «неполный тип» «some_struct» не допускается./C ++ (70) »для структуры. Struct "some_struct" объявляется в файле заголовка ("Structs_header.h"), который включен в заголовок (my_header.hpp) моего источника (my_souce.cpp). У Intellisense, очевидно, нет проблем с поиском этого, так как я могу «пойти на декларацию». Когда я использую функцию, объявленную в одном и том же файле заголовка ("Structs_header.h") и определяется в том же исходном файле ("structs_definition.c"), Intellisense не вина об отсутствующем определении. Путь к заголовому файл находится в c_cpp_properties.json. Я не мог найти никаких других настроек, чтобы исправить это в файле .json. Что я делаю не так?#include "MyHeader.hpp"
MyClass::MyClass()
{
InitTimer();
some_struct test = function_from_structs_header();
};
< /code>
myheader.hpp:
#include
#include
#include
#include
#define CLOCKID CLOCK_REALTIME
#define SIG SIGRTMIN
class MyClass
{
public:
MyClass();
int InitTimer();
};
< /code>
structs_header.h:
#ifndef __STRUCTS_LIB_H__
#define __STRUCTS_LIB_H__
#include
#include
#include
#ifdef __cplusplus
extern "C" {
#endif
struct some_struct;
struct some_struct *function_from_structs_header(const char *path);
< /code>
structs_definition.c:
#include
struct some_struct {
int fd;
char *path;
};
struct some_struct *function_from_structs_header(const char *path)
{
some_struct ret;
DoSomething();
return ret;
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... defined-in