【发布时间】:2019-10-18 07:44:37
【问题描述】:
#include <fortran.h>
real function f() code
return 0.0;
endfunction
program(main)
if 3 == 3 then
print(*) "Your PC is fine.";
elseif 3 == 4 then
print(*) "Your PC is broken.";
else
print(*) "Your PC is trash.";
endif
write(*, "(I)") 5);
end
我在第 10 行收到错误 expected unqualified-id before 'else'。我不知道为什么。
在第 16 行,程序应该在屏幕上写 '5',但出现运行时错误。
另外,C++ 是区分大小写的语言,有没有办法不让 C++ 区分大小写?
FORTRAN.H 是:
#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
#define IF if(
#define THEN ){
#define ELSEIF } else if(
#define ELSE }else{
#define ENDIF }
#define if IF
#define then THEN
#define elseif ELSEIF
#define else ELSE
#define endif ENDIF
#define PROGRAM(x) main(){
#define program PROGRAM
#define END }
#define end END
#define STOP exit(0);
#define stop STOP
#define call
#define subroutine
#define recursive
#define function
#define FOR for(
#define for FOR
#define LOOP ){
#define loop LOOP
#define ENDFOR }
#define endfor ENDFOR
#define WHILE while(
#define DO ){
#define ENDDO }
#define enddo ENDDO
#define PRINT(t) std::cout<<
#define _ <<
#define READ std::cin>>
#define $ >>
#define Read READ
#define read READ
#define Print PRINT
#define print PRINT
#define selectcase(x) switch(x){
#define endselectcase }
#define endfunction }
#define code {
typedef char character;
typedef int integer;
typedef double doubleprecision;
typedef float real;
char* function __FORTRAN_WRITE_ARGS(const char* f) code
integer i;
std::__cxx11::string arg = "";
if f[0] != '(' || f[strlen(f)-1] != ')' then
return "";
endif
for i = 0; i < strlen(f); i++ loop
selectcase(f[i])
case ' ':
continue;
break;
case '(':
continue;
break;
case ')':
continue;
break;
case ',':
continue;
break;
case 'I':
if f[i+1] >= 48 && f[i+1] <= 57 then
arg += "%";
arg += f[i+1];
arg += "d";
else
arg += "%d";
endif
break;
default:
continue;
endselectcase
endfor
char retval[arg.length()] = "";
strcat(retval, arg.c_str());
return retval;
endfunction
#define write(t, f) printf(__FORTRAN_WRITE_ARGS(f),
#define endwrite )
#define WRITE write
#define precision
有没有办法解决这个问题或这个错误?
【问题讨论】:
-
您可以只在您的代码上运行预处理器并查看预处理器生成的内容:Can gcc output C code after preprocessing?(其他编译器应该可以使用类似的选项)
-
不幸的是,C++ 语言在定义上是区分大小写的,就像许多其他语言一样。请参阅此link 了解更多信息。如果你想成为一名多语言程序员,你必须克服这个障碍。
标签: c++