Как известно, чтобы определить extern-переменную в C++, которая изначально определена в C, в C++ — файле достаточно написать
extern "C" ...
А как решить обратную задачу: т.е. как определить переменную в C++ файле,чтобы к ней можно было обращаться из C файла?
Здравствуйте, assad, Вы писали:
A>extern "C" void func()
A>{
A>}
Это не переменная
Лазар
nnnnn2 wrote:
> Как известно, чтобы определить extern-переменную в C++, которая
> изначально определена в C, в C++ — файле достаточно написать
> extern "C" ...
> А как решить обратную задачу: т.е. как определить переменную в C++
> файле,чтобы к ней можно было обращаться из C файла?
А смысл? Если она POD-типа, то почему бы её не объявить как С? А если это класс, то что ты собрался с ней делать из С?
Совместимость обычно только back, в обратную сторону это как?

Posted via RSDN NNTP Server 2.0
Здравствуйте, nnnnn2, Вы писали:
N>Как известно, чтобы определить extern-переменную в C++, которая изначально определена в C, в C++ — файле достаточно написать
N>extern "C" ...
N>А как решить обратную задачу: т.е. как определить переменную в C++ файле,чтобы к ней можно было обращаться из C файла?
К сожалению, никак. extern "C++" нет
Здравствуйте, nnnnn2, Вы писали:
N>Как известно, чтобы определить extern-переменную в C++, которая изначально определена в C, в C++ — файле достаточно написать
N>extern "C" ...
В данном случае речь идет, все же, об объявлении, но не об опредлении.
N>А как решить обратную задачу: т.е. как определить переменную в C++ файле,чтобы к ней можно было обращаться из C файла?
Как и любую другую переменную, только явно указав
linkage specification:
exp.cpp
extern "C" int myvar = 1;
main.c
#include <stdio.h>
extern int myvar;
int main( void )
{
printf( "%d\n", myvar );
}
Код ниже действительно помог, спасибо
MTP>Как и любую другую переменную, только явно указав linkage specification:
MTP>exp.cpp
MTP>MTP>extern "C" int myvar = 1;
MTP>
MTP>main.c
MTP>MTP>#include <stdio.h>
MTP>extern int myvar;
MTP>int main( void )
MTP>{
MTP> printf( "%d\n", myvar );
MTP>}
MTP>