Tôi có một số mã trải rộng trên ba tệp và tôi muốn sử dụng tệp "gloabls" thứ tư để lưu trữ một số hằng số vật lý chẳng hạn như giá trị của pi. Điều này sẽ tránh các định nghĩa lặp lại của pi = 4*atan(1.0)
. Sau khi chọc xung quanh, những gì tôi đã cố gắng là tạo một tập tin toàn cầu tiêu đề:C++ Biến toàn cầu trên nhiều tệp
/*globals.h*/
extern double g_pi;
và một tập tin cpp toàn cầu:
/*globals.cpp*/
#include "math.h"
#include "globals.h"
double g_pi = 4*atan(1.0);
Sau đó, tôi bao gồm các tập tin trong các tập tin chính của tôi:
/*mainFile.cpp*/
//Include math and other libraries
#include globals.h"
int main() {
/*
....
*/
double x = 2*g_pi
/*
....
*/
}
Điều này mang lại cho tôi lỗi tham chiếu không xác định đối với g_pi. Tôi đang sử dụng một trình biên dịch g ++ trên Ubuntu. Hy vọng rằng nó là một sửa chữa đơn giản! Đề xuất của bạn được đánh giá cao. Nếu cần thêm chi tiết, tôi sẽ vui lòng cung cấp chúng.
Sự cố có thể nằm trong cách bạn xây dựng tệp thi hành, vì vậy bạn nên thêm bất kỳ điều gì bạn sử dụng để thực hiện điều đó cho câu hỏi của mình (dòng lệnh Makefile, g ++ ...). – alexisdm
Bạn có thể đưa vào lệnh chính xác mà bạn thực thi để biên dịch không? Và thông báo lỗi chính xác? – JaredC