Я на Arch Linux. Я пробовал gcc и cc.Изменения во включенном файле, не зарегистрированные в C
У меня довольно странная проблема. У меня есть файл, включенный из/usr/include (установленный из пакета Arch) в такой программе C.
// prog.c
#include <foobar/foobar.h>
Когда я меняю его, ничего не происходит. Позволь мне объяснить. Он включает в себя некоторый код С.
// foobar/foobar.h
int baz = 1, qux = 2;
В последнее время он был обновлен.
// foobar/foobar.h
int baz = 1, qux = 2, norf = 3;
Моя тестовая программа выглядит примерно так, как следует.
// prog.c
#include <foobar/foobar.h>
printf ("%d %d %d\n", baz, qux, norf);
выход:
error: ‘norf’ undeclared (first use in this function)
я могу дублировать файл в том же каталоге, имя его foobar2.h, а затем включить этот файл, а и выводит:
1 2 3
Так путь неверен. Я могу сделать ссылку на папку, назовите его foobar2, и включает в себя foobar2/foobar.h и выводит:
1 2 3
Так что файл не является неправильным.
Чтобы подтвердить, что он не регистрирует изменения, я могу полностью удалить папку foobar и попытаться напечатать только две переменные, которые изначально были внутри заголовка. Эти выходы:
1 2
Очевидно, что-то не обновляется. Такое же поведение отображается, когда я пытаюсь обновить файл с перечислениями, функциями или новыми значениями для существующих элементов в файле и включить их в качестве единственных строк в файле. Ни одно из изменений не регистрируется. То же самое действие отображается с помощью gcc и cc. Это происходит уже несколько месяцев, и оно все еще не разрешилось.
Если вы считаете, что это имеет какое-то отношение к самой библиотеке, у меня есть некоторые подробности здесь: http://pastebin.com/Mhj4jfFr – rbong
Я бы попытался включить этот файл, используя кавычки. Возможно, ваша библиотека системных кэшей включает в себя более быструю компиляцию. – Anonymous
Вам нужно строить каждый раз, прежде чем вы свяжетесь? –