2012-06-15 2 views
2

Чисто из любопытства - почему нельзя назвать переменную «c»? Например ...Буква "c" как переменное имя

.386 
.model flat, stdcall 
option casemap:none 

include windows.inc 
include kernel32.inc 
include user32.inc 

includelib user32.lib 
includelib kernel32.lib 

Main  proto 

.data 

hOutput dd 0 
hInput dd 0 

bReadWritten dd 0 
szText db "Program calculates the roots of the quadratic expression ax^2+bx+c",10,"Enter a",0 

a dd 0 
b dd 0 
c dd 0 

delta dd 0 

szInput db 128 dup(0) 



.data? 

.code 
start: 

Invoke Main 
Invoke ExitProcess,0 

Main proc 
    invoke GetStdHandle, STD_OUTPUT_HANDLE 
    mov hOutput, eax 

    invoke GetStdHandle,STD_INPUT_HANDLE 
    mov hInput, eax 

    invoke lstrlen, addr szText 
    invoke WriteFile, hOutput, addr szText, eax, ADDR bReadWritten, NULL 

    invoke ReadFile, hInput, a, eax,addr bReadWritten, NULL 
    invoke ReadFile, hInput, b, eax,addr bReadWritten, NULL 
    invoke ReadFile, hInput, c, eax,addr bReadWritten, NULL 

    invoke Sleep,10000 

    ret 
Main endp 


end start 

... Это приводит к ошибке сборки-время

C: \ Programs 3-й партии \ winASM \ WinAsm \ Projects \ квадратного уравнения \ EXE.asm (24): ошибка синтаксиса:: ошибка A2008 с
C: \ программы 3-й партии \ winASM \ WinAsm \ Проекты \ квадратного уравнения \ EXE.asm (52): ошибка A2008: ошибка синтаксиса: C

Когда я переименую его, все собирает и работает хорошо.

+0

Вполне возможно, 'c' является зарезервированным словом для winasm. Я никогда не использовал его, хотя я точно не знаю. Он должен быть задокументирован в руководстве, если это так. – twalberg

ответ

2

Try именовании переменной PASCAL, FORTRAN, BASIC, SYSCALL или STDCALL. Полагаю, вы получите ту же ошибку. Это все ключевые слова, которые определяют соглашения о вызовах для процедур, если вам придётся использовать те, которые написаны на вышеупомянутых языках. Правильное использование ключевого слова C будет выглядеть как funcname PROTO C arguments...

+0

Хорошо, теперь я знаю, что переменные нельзя назвать такими же, как некоторые существующие языки программирования. Если бы вы это объяснили, я был бы очень рад и доволен :) – 0x6B6F77616C74

+0

@kowalt Я сделал, немного –

+1

kowalt, а не языки программирования; вызывающих конвенций. Некоторые из них возникли на определенных языках, но некоторые другие не имеют языковых имен. – Joey

Смежные вопросы