2014-06-08 1 views
1

Мне нужно включить заголовочный файл C в моем проекте C++, но g ++ вызывает ошибки «не объявлены в этой области». Я прочитал, что мне нужно использовать ключевое слово extern «C», чтобы исправить это, но оно, похоже, не работает для меня.Файл C++, включая файл заголовка C

Вот пример фиктивного запуска этой ошибки.

main.cpp:

#include <iostream> 
extern "C" 
{ 
#include "includedFile.h" 
} 
int main() 
{ 
    int a = 2; 
    int b = 1212; 
    std::cout<< "Hello World!\n"; 

    return 0; 
} 

includedFile.h

#include <stdint.h> 
enum TypeOfEnum { 
    ONE, 
    TWO, 
    THREE, 
    FOUR = INT32_MAX, 
}; 

Ошибка выброшен является:

$> g++ main.cpp 
In file included from main.cpp:4:0: 
includedFile.h:7:9: error: ‘INT32_MAX’ was not declared in this scope 
FOUR = INT32_MAX, 

я видел на this post, что мне может понадобиться #define __STDC_LIMIT_MACROS без какого-либо успеха.

Любая помощь приветствуется!

+0

Почему существует запятая после 'INT32_MAX'? – genisage

+0

Да, но почему вы положили его туда? Вы не ставите запятую после последней вещи в перечислении, не так ли? – genisage

+0

@genisage Фактически для запятой разрешено запятая. –

ответ

0

<cstdint> - это функция C++ 11. Передайте -std=c++11 вашему компилятору.

+0

Принуждение к C++ 11 не кажется правильным в моем случае, для проблем с переносимостью. – fdeslaur

+1

@fdeslaur ... тогда не используйте функцию C++ 11. –