2017-01-16 15 views
1

Код проекта, который мне нужно скомпилировать, находится в C. Проект правильно компилируется в Visual Studio 2015, но мне нужно перенести его в linux (Ubuntu), и это дает мне ошибку следующего типа:Ошибка компиляции кода в c для кросс-платформенной (Linux)

/jpeglib8.h:1011:8: error: expected '=', ',', ';', 'asm' or 'attribute' before 'void' EXTERN (void) jpeg_CreateCompress JPP ((j_compress_ptr cinfo,

1005 #define jpeg_create_compress(cinfo) \ 
1006  jpeg_CreateCompress((cinfo), JPEG_LIB_VERSION, \ 
1007    (size_t) sizeof(struct jpeg_compress_struct)) 
1008 #define jpeg_create_decompress(cinfo) \ 
1009  jpeg_CreateDecompress((cinfo), JPEG_LIB_VERSION, \ 
1010     (size_t) sizeof(struct jpeg_decompress_struct)) 
1011 EXTERN(void) jpeg_CreateCompress JPP((j_compress_ptr cinfo, 
1012       int version, size_t structsize)); 
1013 EXTERN(void) jpeg_CreateDecompress JPP((j_decompress_ptr cinfo, 
1014     int version, size_t structsize)); 

Видимо нет синтаксических ошибок. Я буду очень благодарен за помощь, спасибо.

ответ

1

EXTERN макрос часто используется для объявления переменные (выделить хранилище) или просто определить их (сделать их известными). Вот как это работает:

// main.c 
#define EXTERN 
#include "myinclude.h" 

// sub-module.c 
#include "myinclude.h" 

// myinclude.h 
#ifndef EXTERN 
#define EXTERN extern 
#endif 
EXTERN int myvar; 
EXTERN void do_something(int a); 

В приведенном выше, когда myinclude.h находится в main.c включенных, директива EXTERN устанавливается ни к чему, и поэтому переменная int myvar будет выделена. Во всех других модулях, которые включают его, он будет установлен в extern и поэтому определит только переменную.

Для функций больше не нужно с появлением прототипов.

1

EXTERN может быть макросом, который определен и хорошо обработан вашим компилятором Visual Studio 2015. Похоже, что это не так или не совсем определено в вашей среде компилятора Linux. На мой взгляд, вы должны:

  1. генерировать промежуточный препроцессированный файл и посмотреть на него
  2. взгляд на EXTERN макроопределения в проекте

 Смежные вопросы

  • Нет связанных вопросов^_^