|
warning: implicit declaration of function 'memset', почему лишь warning и почему все работает? |
|
|
|
Sep 30 2010, 13:14
|

Участник

Группа: Участник
Сообщений: 60
Регистрация: 19-03-06
Из: Йошкар-Ола
Пользователь №: 15 388

|
Чистый С. gcc - WinAVR 20050214. файл global.h: Код #ifndef GLOBAL_H #define GLOBAL_H ... U16 d_status; //слово текущего статуса ... #endif //GLOBAL_H файл check.с: Код #include "global.h" ... Set_bit(d_status,num_bit); ... файл ins.с: Код #include "global.h" ... Clr_bit(d_status,num_bit); ... файл outs.с: Код #include "global.h" ... if (bit_is_set(d_status,num_bit)) { ... }; ... Вот такой изврат... И ведь работает... Только грабли с непрозрачностью потоков данных - во весь рост. Но это уже другая тема.
|
|
|
|
|
Oct 1 2010, 11:56
|

Участник

Группа: Участник
Сообщений: 60
Регистрация: 19-03-06
Из: Йошкар-Ола
Пользователь №: 15 388

|
Цитата(777777 @ Sep 30 2010, 19:24)  Ты думаешь что в той версии было можно а сейчас нет? А полностью абзац прочитать? Я имел в виду, что это было давно, и в таком стиле я уже не пишу. Цитата(777777 @ Sep 30 2010, 19:24)  А поскольку сейчас той версии ни у кого нет, то придется верить на слово? Я в это не верю А я не верю, что ни у кого нет. И можно проверить в более свежей версии. Сейчас вот накидал тестовый проектик в 20090313 - работает, ни одного варнинга. Прикладываю проект вместе с lst и map, а также скриншоты прогона в эмуляторе.
test.zip ( 5.25 килобайт )
Кол-во скачиваний: 105Data: 1 bytes (0.1% Full) (.data + .bss + .noinit) Build succeeded with 0 Warnings...
|
|
|
|
|
Oct 1 2010, 16:36
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(Juray @ Oct 1 2010, 15:56)  Сейчас вот накидал тестовый проектик в 20090313 - работает, ни одного варнинга. Забавно. Те же файлы подсунутые в Visual Studio 2008 выдали ошибку: 1>module.obj : error LNK2005: "char global_var" (?global_var@@3DA) already defined in test.obj 1>C:\Users\SWW\Documents\Visual Studio 2008\Projects\test\Debug\test.exe : fatal error LNK1169: one or more multiply defined symbols found И еще кто-то говорит о стандартах и переносимости... Интересно, а что скажет IAR, кто-нибудь проверит?
|
|
|
|
|
Oct 2 2010, 08:29
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
Цитата(Juray @ Oct 1 2010, 15:56)  Сейчас вот накидал тестовый проектик в 20090313 - работает, ни одного варнинга. А предупреждения включены? Их вывод лучше в makefile задавать. IMHO: лучше включить все, ну, кроме некоторых  , чтобы потом не было грусно при отладке.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Oct 2 2010, 08:44
|

Участник

Группа: Участник
Сообщений: 60
Регистрация: 19-03-06
Из: Йошкар-Ола
Пользователь №: 15 388

|
Предупреждения - по умолчанию. Этого недостаточно? И ведь дело не в предупреждениях - по прогону явно же видно, что отовсюду ссылка идет на одну и ту же переменную, да и memory usage при компиляции отчиталось - "1 bytes". (если сделать переменную static - получаем "Data: 2 bytes" ). Интересно бы проверить в "большом" gcc. Кстати, вот если в global.h вставить Код const char glob_const = 3; - вываливается ошибка "multiple definition of `glob_const'". Соответственно "Build failed with 1 errors and 0 warnings..."
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|