[an error occurred while processing this directive]
|
В общем проект состоит из двух маленьких файлов : 1.c и 2.c
Файл 1.c демонстрирует ошибку компилятора - я могу дважды объявить переменную с одним и тем же именем!!! И компилятор создает *.obj файл!
Файл 2.c демонстрирует ошибку линкера - в файле 1.c переменная объявлена как "unsigned long my_var1", а в файле 2.c как "extern float my_var1" и линкер не ругается и создает *.HEX файл, а должен ругнуться "types mismatch" и не создавать *.HEX.
В службе поддержки говорят, что у них все нормально, а это у меня компилятор инсталлирован неправильно (хотя я его переустанавливал да и если бы он был установлен неправильно, то он бы вылетал, а не делал *.obj и *.hex файлы).
Просьбочка проверить - на других компьютерах как будет вести мой проект с этим компилятором ?
Можно скопировать приведенные тексты в файлы с именами 1.c и 2.c (только в #include двойные кавычки заменить на одинарные).
Вот командные строки :
C:\HTSOFT\PIC18\BIN\picc18.exe 1.c -C -FAKELOCAL -G -E -18F242
C:\HTSOFT\PIC18\BIN\picc18.exe 2.c -C -FAKELOCAL -G -E -18F242
C:\HTSOFT\PIC18\BIN\picc18.exe 1.obj 2.obj -FAKELOCAL -G -O"test.HEX" -E -18F242
Думаю, хотят меня буржуи обмануть и не исправлять ошибки.
////////// файл 1.c ////////
#include "pic18.h" // здесь надо одинарные кавычки, но я боюсь что
// это воспримется как гипертекст
unsigned long my_var1 ;
unsigned long my_var1 ; // I can declare the same variable twice !!!
void increment( void) ;
void main( void) {
unsigned char k ;
my_var1 = 0 ;
for( k = 0 ; k < 7 ; k ++) {
increment() ;
}
}
////////// файл 2.c ///////////////////
#include "pic18.h" // здесь надо одинарные кавычки
// NB! This variable is unsigned long in file 1.c !!! Linker doesn't
// check types !!!
extern float my_var1 ;
void increment( void) {
my_var1 += 1 ;
}
/////////////////////////////////
E-mail: info@telesys.ru