Мой GCC версии 4.8.5порядок компилятор с GCC 4.8.5
- POSIX GCC версии 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
У меня есть два CPP файлов:
- 1.cpp и файл 2.cpp
пока есть статическая функция в 1.cpp калле . D на файле 2.cpp В большинстве машине, мы хотели бы это:
- г ++ файле 2.cpp 1.cpp
или это приведет к компиляции ошибки или ошибки во время выполнения
Однако. , В моей машине с gcc 4.8.5, я должен скомпилировать с помощью «g ++ 1.cpp 2.cpp», чтобы сделать его успешным.
Это свойство gcc4.8.5? Или что-то не так на моей мягкой , Или я использовал его неправильно?
============================================================================================================================================ ================
Моя машина centos7 установлена на virtulbox mac. Вот мой код:
1.h
#include <map>
using namespace std;
class A {
private:
A();
static A _instance;
map<int, int> test_map;
public:
static A& get_instance();
static void fun();
};
1.cpp
#include <iostream>
#include "1.h"
using namespace std;
A A::_instance;
A::A() {
cout << "A::A()\n";
}
A& A::get_instance() {
cout << "A::get_instance()\n";
return A::_instance;
// static A instance;
// return instance;
}
void A::fun() {
cout << "A::fun()\n";
get_instance().test_map[1];
}
main.cpp
#include <iostream>
#include "1.h"
using namespace std;
int test() {
cout << "test()\n";
A::fun();
return 0;
}
int y = test();
int main() {
cout << "main()\n";
A::fun();
}
В большинстве машины и в том, что я вижу в Интернете, мы должны собрать как этот: г ++ main.cpp 1.cpp
Но в моей машине, я должен составить так: г ++ 1.cpp main.cpp
что случилось с моей машиной или моим gcc?
Можете ли вы привести пример кода и сообщения об ошибках, чтобы прояснить вопрос? Например. «Статическая функция в 1.cpp, вызванная 2.cpp', не имеет смысла (статическая функция не может вызываться за пределами файла, в которой она определена). – yugr
благодарит за ваше мнение, я редактировал вопрос и добавил свой код. Ждем ваших решений. – user6246294
Просьба также предоставить подробную информацию о том, какая ошибка вы видите. Заказ файлов не должен иметь значения вообще, если вы не полагаетесь на неопределенное поведение (например, порядок статических конструкторов). – yugr