Любой тег gcc для компиляции Cpp-файла, который включает в себя C сторонний заголовочный файл - PullRequest
1 голос
/ 01 апреля 2011

Файл заголовка третьей части (header.h) определяет структуру ниже, его можно передать компилируя, если рассматривать его как язык Си.Но мы пытаемся включить этот файл в файл CPP, и компиляция не удалась, так как g ++ компилирует больше ограничений или по другой причине?1007 * Cpp файл main.cpp

#include "header.h"
#include <iostream>

using namespace std;
int main()
{
    conn_t list;
    list.data = 1;
    list.next = NULL;
    cout<<"hello:"<<list.data<<endl;
    return 0;
}

Вопрос: есть ли тег gcc / g ++ для его компиляции?

Ответы [ 4 ]

1 голос
/ 01 апреля 2011

Это должно быть написано так, чтобы иметь typedef и ссылку на саму структуру:

typedef struct tag_conn_t
{
   int data;
   struct tag_conn_t *next;
}conn_t;

Удачи,

Юлианский

1 голос
/ 01 апреля 2011
typedef struct
{
   int data;
   struct conn_t *next;
}conn_t;

Я не знаю, допустимо ли в некоторых компиляторах то, что вы здесь делаете, но мне это кажется неправильным.Если вы используете typedef, вы не должны добавлять префикс typename к struct.Также имя conn_t в этом случае будет определено, как только структура объявлена, но недействительна внутри объявления.Таким образом, код будет работать:

struct conn_t
{
   int data;
   struct conn_t *next;
};

Нет typedefs, я просто использую имя структуры.

0 голосов
/ 01 апреля 2011

Я считаю, что тег -x language с c-header для языка в gcc / g ++ - это то, что вы ищете.

0 голосов
/ 01 апреля 2011
  1. Во-первых, заголовочный файл - это сторонний заголовочный файл C, его можно скомпилировать на языке C;
  2. Во-вторых, файл заголовка не может быть обновлен, просто для определенной цели, я должен включить этот файл заголовка в мой файл C ++, а затем во время компиляции C ++ файл заголовка также будет рассматриваться как C ++,вот с какой проблемой я столкнулся.

Мне все еще нужно, чтобы ты, гений, дал мне ответ на этот вопрос, очень благодарен твоим парням за ответ.

...