как "отключить" namespace ?

vertyal17

Вобщем проблема примерно такая: есть С++ код
__________________________________________________
using namespace std
..
C++ код зависимый от namespace
..
-<>-
..
далее C код, вроде не зависимый от namespace, однако изза наличия using namespace std, теперь уже не компилирующийся
..
____________________________________________________________
Что можно сделать? вроде как по логике надо бы в месте -<>- "выйти" из namespace std, может перейти к какомуто стандартому. Можно ли это както разрешить?

mkrec

можно засунуть этот юзинг нэймспейс в блок

mkrec

разумеется, можно и явно указывать необходимый нэймспейс в первой части кода (или наоборот, во второй части явно указывать, что нэймспейс не нужен)

vertyal17

Спасибо, в принципе чтото типа второго способа и хотел придумать

vertyal17

Не помогает вобщем уточнение
Новый код
__________________________________________________
//using namespace std - убрал, использую явное указание пространства
#include <string> // нужно, поскольку тип string используется в С++ коде,
//при этом string не является частью namespace std
..
C++ код зависимый от <string>
int function (string input)
{
return (0);
}
..
-<>-
..
далее C код, вроде не зависимый от namespace или string, однако изза наличия #include <string>, теперь уже не компилирующийся
ошибка в точности как при использовании namespace
..
____________________________________________________________
В этом случае можно ли чтонибудь поделать?
Спасибо

mkrec

ошибка в точности как при использовании namespace
а что за ошибка-то конкретно?

vertyal17

Сча уж ушел с места, завтра напишу конкретно. (Чтото там я помню const и звездочки какието пробегали, вобщем интуитивно, какаято несовместимость лексическая между С и С++, которая видимо возникает только если в программе обнаружиываются namespace-ы.)
Спасибо за участие в любом случае

ppplva

Пытаешься использовать namespace в программе на C ?

vertyal17

ошибка собственно такая
/usr/include/libintl.h error: expected unqualified-id before ‘const’
/usr/include/libintl.h error: expected `)' before ‘const’
/usr/include/libintl.h error: expected initializer before ‘const’
/usr/include/libintl.h error: expected unqualified-id before ‘const’
/usr/include/libintl.h error: expected `)' before ‘const’
/usr/include/libintl.h error: expected initializer before ‘const’
/usr/include/libintl.h error: expected unqualified-id before ‘const’
/usr/include/libintl.h error: expected `)' before ‘const’
/usr/include/libintl.h error: expected initializer before ‘const’
/usr/include/libintl.h error: expected unqualified-id before ‘const’
/usr/include/libintl.h error: expected `)' before ‘const’
/usr/include/libintl.h error: expected initializer before ‘const’
/usr/include/libintl.h error: expected unqualified-id before ‘const’
/usr/include/libintl.h error: expected `)' before ‘const’
/usr/include/libintl.h error: expected initializer before ‘const’
make: *** [gpredmd_newsubject/gpredmd_newsubject_callbacks.o] Ошибка 1
make: Цель `all' не была пересобрана из-за ошибок.

vertyal17

Нет, пытаюсь использовать нагенеренный С код в программе на С++, это порочно?

ppplva

Это не всегда возможно. Может, проще генерить C++ код ?

ppplva

Так непонятно. Сделай _маленькую_ программу, которую можно скомпилировать и увидеть проблему.

vertyal17

Вобщем то нагенерить С++ код не получается - Glide его у меня не генерит. Да и ошибка возникает гдето в какомто libintl - это не мой код.
Как поможет маленькая программа, которая компилируется без ошибок?
#include <gtk/gtk.h>
int main( int argc,
     char *argv[] )
{
    GtkWidget *window;
    
    gtk_init (&argc, &argv);
    
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_widget_show (window);
    
    gtk_main ;
    
    return 0;
}
Например вот
зы. Предполагаю что добавление в маленькую программу #include <string> приведет к ошибке (правда ручаться не могу, но если есть желание могу проверить)

kokoc88

Как поможет маленькая программа, которая компилируется без ошибок?
Очевидно, тебя просили маленькую программу, которая компилируется с ошибками. Си-шные заголовки надо включать так:
extern "C"
{
#include
}
Оставить комментарий
Имя или ник:
Комментарий: