Как сделать глобальную константу (работающую в нескольких файлах) в программе на C?

У меня есть программа на языке 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...
}

Вопросы:

  1. Когда я использую GDB для отладки, b PI возвращает (в обоих файлах, один и тот же результат) "Нет символа "PI" в текущем контексте". Однако математика, зависящая от PI, вычисляется правильно. Есть ли способ посмотреть PI в gdb?

  2. Могу ли я также включить две строки для stdio и stdlib в файл myheader.h?

  3. Могу ли я также включить любые прототипы функций в файл myheader.h? Если я сделаю это, а затем, допустим, создам файл file3.c, который не требует ни одного из этих прототипов, потому что не использует эти функции, будет ли нанесен какой-либо вред?

11
задан ggkmath 29 November 2011 в 03:25
поделиться