<p>I have this 'simplified' fortran code</p>

<pre><code>real B(100, 200) 
real A(100,200)

... initialize B array code.

do I = 1, 100
  do J = 1, 200
    A(J,I) = B(J,I)
  end do
end do
</code></pre>

<p>One of the programming gurus warned me, that fortran accesses data efficiently in column order, while c accesses data efficiently in row order.   He suggested that I take a good hard look at the code, and be prepared to switch loops around to maintain the speed of the old program.</p>

<p>Being the lazy programmer that I am, and recognizing the days of effort involved, and the mistakes I am likely to make, I started wondering if there might a #define technique that would let me convert this code safely, and easily.</p>

<p>Do you have any suggestions?</p>

Are you sure your FORTRAN guys did things right?
The code snippet you originally posted is already accessing the arrays in row-major order (which is 'inefficient' for FORTRAN, 'efficient' for C).
As illustrated by the snippet of code and as mentioned in your question, getting this 'correct' can be error prone.  Worry about getting the FORTRAN code ported to C first without worrying about details like this.  When the port is working - then you can worry about changing column-order accesses to row-order accesses (if it even really matters after the port is working).