Gamma SPb (14.08.2007 16:55, просмотров: 188) ответил vet_ на const int n=5; в хедере никакой памяти и не выделит
сам то пробовал? <c>
const UWORD asdf = 5;
</c>
MPLAB C30 3.00:
task_term.o(.const+0x0):task_term.c: multiple definition of `asdf'
term_func.o(.const+0x0):term_func.c: first defined here
RealView 3.0:
.\sim\obj\_sim.axf: Error: L6200E: Symbol asdf multiply defined (by appl.o and std_retarget.o).
Ну да ладно, фиг с ним. Допустим компилятор не соответсвует стандарту (бо стандарт говорит, что const это квалификатор, который указывает на то, что эта переменная может использоваться только для чтения, и все. Больше она ничем от других переменных не отличается) - не выделяет память для объявленной глобально переменной.
Но что какой код он вам в таком случае сгенерит???
asdf.h :
<c>
const U08 qwer[4] = {0x00, 0x01, 0x02, 0x03};
</c>
asdf.c :
<c>
#include asdf.h
U08 zxcv[4];
void copy(void)
{
memcpy(zxcv, qwer, sizeof(zxcv));
}
</c>
Хотите сказать, что компилятор проигнорирует вызов стандартной функции??