일련의 서브 루틴을 실행하는 포트란 프로그램이 있습니다. 첫 번째는 .txt 파일에서 데이터로드를 읽습니다. 모든 변수는 프로그램 및 각 서브 루틴의 '포함'과 함께 포함 된 다른 파일에 정의됩니다. 다양한 하위 루틴으로 변수를 전달하는 가장 좋은 방법은 무엇입니까?fortran 08의 '전역 변수'는 무엇입니까?
답변
COMMON
블록을 모듈로 변환 한 다음 실제로 사용하는 변수 만 use some_module, only: var1, var3, var6
을 통해 가져 오는 것이 좋습니다. 여러 가지 이유 때문에 include
파일은 나쁜 생각이 아닙니다. 파일을 변경하면 make가 해당 파일에 종속 된 소스 파일을 다시 빌드하기 때문에 make는 실행하지 않습니다. 다른 끔찍한 F77ism들과 함께 그들을 남겨 두는 것이 가장 좋습니다 ...
* "그들은 재건축을 시작하지 않습니다."* 당신이 moern buid 시스템을 사용하지 않거나 의존성 목록을 올바르게 설정하지 않은 것처럼 보입니다. –
덕분에 도움을 여기 (모든 초기화 중 후) 메인 프로그램의 첫 번째 부분 없음 암시 가! 'variables.f08' 전화 read_data 인쇄 *을 포함 변수를 포함 '프로그램 shear_3d'이며, "데이터 읽기" 호 derive_variables (NX) 인쇄 * "파생 변수" 호 init_matrices 인쇄 * "초기화 매트릭스" 호 initial_conditions의' 및 변수 파일은 다음과 같다 : '정수 I, J , k, t 정수 NX, 뉴욕, NetA로, 뉴질랜드, 정수 read_nx, read_ny을 NT, 여기에 코드를 읽어 완전히 불가능 @TomJ 100 정도 선 – TomJ
와' DT 더블 정밀 DX, DETA, DZ을 read_nz. 관련 정보를 포함하도록 질문하십시오. 정말로 그 링크를 읽으십시오. –
적절하게 파생 된 유형을 사용하여 인수 목록으로 변수를 전달하십시오. 전역 변수는 나쁜 생각입니다. –
[ask]를 읽으십시오. 너 혼자 코드를 보여줘야한다. 네가하고있는 일과 뭘하고 싶은지 나에게 분명하지 않다. [mcve]도 참조하십시오. –
즉, 서브 루틴에서 변수를 변경할 수 있습니까? 또는 상수? 너의 문제는 무엇인가? 문제 디자인? 또는 코드를 작성하는 방법은 무엇입니까? 우리에게 어떤 코드가 보이길 원하십니까? 그렇다면 먼저 코드를보아야합니다. 또한 [투어]를 가져 가면 유용합니다. 솔직히 말해서, 나는 단지 모든 사람들을 바보처럼 애타게 말하는 것이 아닙니다. –