Можем ли мы использовать SizeOf () оператор в директивы препроцессора? (C язык)

R

rameshbabu

Guest
Можем ли мы использовать SizeOf () оператор в директивы препроцессора. # Include # define TOTAL_ELEMENTS (SizeOf (массив) / SizeOf (массив [0])) Int массива [] = {} 23,34,12,17,204,99,16; Int основных () {Int D, для (г = -1; г
 
да, можно. Вы должны увидеть # определить как текст, который будет заменен перед компиляцией (именно поэтому они называются PRE-процессор директив) # define MYWORD ANYTEXTIWANT то весь текст, как "MYWORD" Вдоль код будет заменен на "ANYTEXTIWANT" до компиляции, так что компилятор будет понимать, вт "ANYTEXTIWANT" ... Вывод: вы можете сделать любой определить вы хотите, но имейте в виду, что текст, который вы замените будет иметь смысл в кусок кода она вставлена ​​хорошая EDIT удачу. [цитировать] почему нет выхода для этой программы [/ цитата] Извините, я только что прочитал вопрос. Это очень странно ... Я пробовал и как вы сказали, нет выхода, но если вы сделаете это, то: [код] # include # define TOTAL_ELEMENTS (SizeOf (массив) / SizeOf (массив [0])) Int массива [] = {23,34,12,17,204,99,16} Int основных () {Int D, SZ, для (г = 1, Sz = (TOTAL_ELEMENTS-2), г
 
Я попробовал его, и он работает нормально с использованием Borland C Тубо
 
CMIIW, SizeOf () возвращает тип size_t, так что, возможно, вы должны преобразовать тип int, хотел (INT) SizeOf (массив) одно дело в том, что макросы просто заменить текст, так что вы должны быть осторожны с приоритетом. если # define DOUBLE (х) 2 * х дважды (MyVar-1) будет заменен на 2 * MyVar-1, который не будет таким, каким оно должно быть. Безопасный способ вложить каждый констант и параметров со скобками, # define DOUBLE (х) ((2) * (х)) так же призыв будет заменен ((2) * (MyVar-1)) Я надеюсь, что это помогает, и жаль, если есть какие-либо ошибки.
 
Залы прямо им также наблюдения одно и то же ...
 

Welcome to EDABoard.com

Sponsor

Back
Top