Как скомпилировать программу на C ++ с использованием html tidy C ++ - PullRequest
2 голосов
/ 13 февраля 2011

Я установил tidy-dev из репозитория Ubuntu, проверил путь установки - все нормально (/usr/include/tidy).

Но я не могу найти истинные флаги для компиляции моего сценария c ++ с помощью включающей tidy оболочки c ++ tidyx.h из http://users.rcn.com/creitzel/tidy/tidyx.h

Вы можете мне помочь?

Файл моего тестового скрипта с именем 1.cpp, tidyx.h, который я положил рядом. 1.cpp содержание:

#include "tidyx.h"

int main()
{
}

Я пробую, но безрезультатно:

$ gcc -I/usr/include/tidy 1.cpp -ltidy

In file included from 1.cpp:1:
tidyx.h: In constructor ‘Tidy::Source::Source()’:
tidyx.h:83: error: invalid conversion from ‘int (*)(ulong)’ to ‘int (*)(void*)’
tidyx.h:84: error: invalid conversion from ‘void (*)(ulong, byte)’ to ‘void (*)(void*, byte)’
tidyx.h:85: error: invalid conversion from ‘Bool (*)(ulong)’ to ‘Bool (*)(void*)’
tidyx.h:86: error: invalid conversion from ‘ulong’ to ‘void*’
tidyx.h: In constructor ‘Tidy::Sink::Sink()’:
tidyx.h:123: error: invalid conversion from ‘void (*)(ulong, byte)’ to ‘void (*)(void*, byte)’
tidyx.h:124: error: invalid conversion from ‘ulong’ to ‘void*’
tidyx.h: In member function ‘void Tidy::Buffer::Attach(void*, uint)’:
tidyx.h:165: error: invalid conversion from ‘void*’ to ‘byte*’
tidyx.h:165: error:   initializing argument 2 of ‘void tidyBufAttach(TidyBuffer*, byte*, uint)’
tidyx.h: In member function ‘int Tidy::Document::Create()’:
tidyx.h:496: error: invalid conversion from ‘ulong’ to ‘void*’
tidyx.h:496: error:   initializing argument 2 of ‘void tidySetAppData(const _TidyDoc*, void*)’
tidyx.h: In member function ‘void Tidy::Document::SetAppData(ulong)’:
tidyx.h:511: error: invalid conversion from ‘ulong’ to ‘void*’
tidyx.h:511: error:   initializing argument 2 of ‘void tidySetAppData(const _TidyDoc*, void*)’
tidyx.h: In member function ‘ulong Tidy::Document::GetAppData()’:
tidyx.h:512: error: invalid conversion from ‘void*’ to ‘ulong’

1 Ответ

1 голос
/ 13 февраля 2011

Чтобы включить заголовочный файл, вам нужно использовать директиву препроцессора #include. Он будет искать заголовочный файл в путях включения компилятора.

Если tidyx.h в /usr/include/tidy, вы можете поместить в исходный файл:

#include <tidy/tidyx.h>

, а затем скомпилируйте только с gcc script.cpp, поскольку /usr/include, скорее всего, путь включения по умолчанию для вашего компилятора.

В противном случае вы также можете поместить в исходный файл:

#include <tidyx.h>

А затем попросите GCC поискать в /usr/include/tidy: gcc -I/usr/include/tidy script.cpp

На данный момент заголовок будет найден. Если вы получите другие ошибки, связанные с tidy (например, некоторые функции tidy не определены), вам нужно будет связать ваш двоичный файл с какой-либо библиотекой, используя опцию GCC -l.


РЕДАКТИРОВАТЬ после массового редактирования OP.

Ваша проблема здесь в том, что tidyx.h содержит код C ++, а также ваш исходный файл, с точки зрения его расширений, кажется исходным файлом C ++. Вам понадобится компилятор C ++ для его компиляции. Используйте g++ вместо gcc:

g++ script.cpp
...