У меня есть программа 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
? Если я это сделаю, а затем скажу, что создаю файл3.c, который не требует какого-либо из этих прототипов, потому что он не использует эти функции, какой-либо вред нанесен?