"another_value"는 매직 넘버 또는 다른 vaiable을 나타내는 것으로되어 있습니까? 먼저, 모든 프리미티브를 정의 할 때 초기 값을 할당해야합니다. #define ANOTHER_VALUE 0을 사용하면 마술 숫자를 사용하지 마십시오.
:
여기
How do I use extern to share variables between source files?
은 컴파일 예 : 당신이 C 코드에서 사용하기 위해의 프로토 타입에 당기는 경우, 그들은 변수 "C"를 통근 할 필요가 아마 때문에
When I remove it from the C file and put it under the private variables in the header file, it compiles fine but then my output blows up.
extern Testestpp 2000
//============================================================================
// Name : externTest.cpp
// Author :
// Version :
//============================================================================
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "externTest.hpp"
extern "C" {
#include "value.h"
}
using namespace std;
eTest::eTest() {
m_test=global_table;
}
void eTest::testValue() {
printf("Global C Value: %lu \n", global_table);
cout << "Test global value: " << m_test << endl;
}
value.h
/*
* value.h
*
* Created on: Mar 15, 2012
*/
#ifndef VALUE_H_
#define VALUE_H_
extern unsigned long global_table;
void assign_value(unsigned long lValue);
void print_global_value();
#endif /* VALUE_H_ */
value.c
/*
* value.c
*
* Created on: Mar 15, 2012
*/
#include "value.h"
unsigned long global_table;
void assign_value(unsigned long lValue) {
global_table=lValue;
}
void print_global_value() {
printf("Global C Value: %lu \n", global_table);
}
당신은 테이블의 물리적 주소를 사용하려면, 단지 포인터가 global_table하는 M_TEST합니다
private:
unsigned long *m_test;
poi를 참조 해제해야합니다. 값을 입력하십시오 :
eTest::eTest() {
m_test=&global_table;
}
void eTest::testValue() {
printf("Global C Value: %lu \n", global_table);
cout << "Test global value: " << *m_test << endl;
}
예를 들어 사용중인 코드를 수정하십시오! 그 선언 생성자()는 테스트 클래스의 멤버가 아닌 **입니다. 이 예제는 전혀 컴파일하지 않아야합니다. –
테스트 메소드를 전역 메소드로 구현 한 이유는 무엇입니까? 클래스의 private 멤버는 액세스 할 수 없습니다 (컴파일 방법이 궁금합니다). 어쩌면 당신의 예제가 실제 코드와 너무 멀리 떨어져있을 수도 있습니다. –
옳고 그른 대답을하기에 충분히 구체적인 질문은하지 않으므로 여기에 속한 것은 아닙니다. – Omnifarious