У меня есть программа на языке ANSI C, состоящая из двух файлов. Первый файл содержит функцию main()
, а второй файл содержит другие функции, которые вызывает первый файл. Перед определением функции main()
я разместил следующий код:
#define PI 3.14159265358979323846
но второй файл не видит эту переменную. Первый файл видит ее нормально. Затем я поместил эту же строку во второй файл (сохранив ее в первом файле, как указано выше), перед определениями функций, но все равно второй файл ее не видит. Все всегда компилируется нормально, но при отслеживании переменной PI в gdb, она показывает "No symbol "PI" in current context."
Как сделать PI глобальной константой, видимой во всех файлах, скомпилированных в приложении?
EDIT / UPDATE:
Основываясь на ответах, я создал следующий файл:
myheader. h
#ifndef my_header_stuff
#define my_header_stuff
#define PI 3.1415926535897932384626433832795
#endif
и в два файла, в которых я хочу видеть эту константу PI, я включил этот файл следующим образом:
file1.c
#include <stdio.h>
#include <stdlib.h>
#include "myheader.h"
int main(void) {
etc...
}
и file2.c
#include <stdio.h>
#include <stdlib.h>
#include "myheader.h"
double interesting_function(void) {
etc...
}
Вопросы:
Когда я использую GDB для отладки, b PI
возвращает (в обоих файлах, один и тот же результат) "Нет символа "PI" в текущем контексте". Однако математика, зависящая от PI, вычисляется правильно. Есть ли способ посмотреть PI в gdb?
Могу ли я также включить две строки для stdio и stdlib в файл myheader.h
?
Могу ли я также включить любые прототипы функций в файл myheader.h
? Если я сделаю это, а затем, допустим, создам файл file3.c, который не требует ни одного из этих прототипов, потому что не использует эти функции, будет ли нанесен какой-либо вред?