ReAl (14.08.2007 21:34, просмотров: 202) ответил Gamma SPb на ну да, GCC и RealView - очень специфические компиляторы =)
Будем продолжать тестирование. Только, пожалуйста, список компиляторов, признанных "неспецифическими" - в студию. А то так все окажутся "специфическими". Ну кроме, может быть, одного. n.h
<c>const int n = 5;</c>
mm.h
<c>void mm();</c>
m.cpp
<c>#include <iostream>
#include "n.h"
#include "mm.h"
const int *p = &n; // чтобы обязательно сгенерировал "тело" константного объекта n
int main()
{
cout << "from main " << n << "\n";
mm();
return 0;
}</c>
mm.cpp
<c>#include <iostream>
#include "n.h"
#include "mm.h"
const int *p1 = &n;
void mm()
{
cout << "from mm " << n << "\n";
}</c>
Borland bcc32 версии 5.02 от 1997 года это дело собирает в exe без никаких замечаний, в попрошенных ключиком -S асмовых файлах в каждом присутствует
<asm> align 4
_n label dword
dd 5</asm>и просто-напросто эти _n не объявлены public
"объекты, объявленные const и не объявленные в явной форме extern имеют внутреннее связывание".